Я хотел бы выполнить операцию «Исключить» для набора элементов.
Код такой:
IEnumerable<DataGridViewColumn> dgvColumns = dataGridView.Columns.OfType<DataGridViewColumn>();
IEnumerable<DataColumn> dsColumns = dataSet.Tables[0].Columns.OfType<DataColumn>();
Теперь, как выбрать столбцы из dataSet.Tables [0], которых нет в dgvColumns?
Я знаю, что столбцы из DataGridView другого типа, чем столбцы в DataSet. Я хочу подобрать только подмножество общих ценностей. Как это:
var ColumnsInDGV = from c1 in dgvColumns
join c2 in dsColumns on c1.DataPropertyName equals c2.ColumnName
select new { c1.HeaderText, c1.DataPropertyName, c2.DataType, c1.Visible };
Над кодом выбираются те «столбцы», которые есть в обоих наборах. Поэтому я решил создать еще один набор «столбцов» в DataSet:
var ColumnsInDS = from c2 in dsColumns select new { HeaderText = c2.ColumnName, DataPropertyName = c2.ColumnName, c2.DataType, Visible = false };
и теперь, когда я смогу выполнить, кроме как вот так:
var ColumnsOnlyInDS = ColumnsInDS.Except<ColumnsInDGV>;
Но я получаю две ошибки:
- Не удалось найти тип или имя пространства имен 'ColumnsInDGV' (отсутствует директива using или ссылка на сборку?)
- Невозможно назначить группу методов для неявно типизированной локальной переменной
Таким образом, решением было бы создать класс и затем использовать его вместо неявно типизированной локальной переменной. Но я думаю, что разработка класса только по этой причине не обязательна.
Есть ли другое решение этой проблемы?