我有一个 Linq to dataset 查询,它连接两个表并从每个表中提取所需的参数。我需要让它们进入 aDataTable
以绑定到 a DataGridView
。我在MSDN上找到的执行此操作的示例是一个从单个表中获取单个值的简单示例,但是当我尝试更改查询以遵循它时,我无法这样做。该CopyToDataTable()
方法要求将查询分配给 a IEnumerable<DataRow>
,但是当我这样做时,我被告知需要显式转换;但强制转换在运行时失败,但有以下例外:
无法将“d__61`4[System.Data.DataRow,System.Data.DataRow,System.Int32,<>f__AnonymousType0`1[System.Int32]]”类型的对象转换为“System.Collections.Generic.IEnumerable”类型1 [系统.数据.数据行]'。
原始工作查询:
var query = MyDataSet.Table1.AsEnumerable().Join(MyDataSet.Table2.AsEnumerable(),
table1 => table1.Field<Int32>("Table1_Id"),
table2 => table2.Field<Int32>("Table1_Id"),
(table1, table2) => new
{
Table1ID = table1.Field<Int32>("Table1_Id")
//Other parameters commented out to simplify the example
});
具有显式转换的非工作查询:
IEnumerable<DataRow> query = (IEnumerable<DataRow>)MyDataSet.Table1.AsEnumerable()
.Join(MyDataSet.Table2.AsEnumerable(),
table1 => table1.Field<Int32>("Table1_Id"),
table2 => table2.Field<Int32>("Table1_Id"),
(table1, table2) => new
{
Table1ID = table1.Field<Int32>("Table1_Id")
//Other parameters commented out to simplify the example
});