我想对一组项目执行例外操作。
代码是这样的:
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 指令或程序集引用?)
- 无法将方法组分配给隐式类型的局部变量
所以解决方案是构建一个类,然后使用它而不是隐式类型的局部变量。但我认为仅出于这个原因开发一个类并不是必要的开销。
这个问题还有其他解决方案吗?