C# LINQ连接多个数据表-InvalidOperationException
下面是我使用LINQ连接多个数据表的代码。代码没有错误,但返回运行时错误/InvalidOperationException,表示源代码不包含数据行 如果我在从join raw3到join raw4.FieldOtherString}结尾的行中进行注释,我会在CopyToDataTable语句之后看到DataTable中的数据 如果我使用所有的数据表,我将得到InvalidOperationException,因为源不包含数据行。错误另外,我想用第一个表firstDT连接所有表C# LINQ连接多个数据表-InvalidOperationException,c#,linq,join,datatable,C#,Linq,Join,Datatable,下面是我使用LINQ连接多个数据表的代码。代码没有错误,但返回运行时错误/InvalidOperationException,表示源代码不包含数据行 如果我在从join raw3到join raw4.FieldOtherString}结尾的行中进行注释,我会在CopyToDataTable语句之后看到DataTable中的数据 如果我使用所有的数据表,我将得到InvalidOperationException,因为源不包含数据行。错误另外,我想用第一个表firstDT连接所有表 DataTabl
DataTable datatable = new DataTable();
datatable.Columns.Add("First_Code", typeof(string));
datatable.Columns.Add("First_Date", typeof(DateTime));
datatable.Columns.Add("OtherString", typeof(string));
datatable.Columns.Add("FirstPrice", typeof(decimal));
datatable.Columns.Add("SecondPrice", typeof(decimal));
datatable.Columns.Add("ThirdPrice", typeof(decimal));
datatable.Columns.Add("FourthPrice", typeof(decimal));
var data = from raw1 in firstDT.AsEnumerable()
join raw2 in secondDT.AsEnumerable() on
new { ID = raw1.Field<string>("First_Code"), Date = raw1.Field<DateTime>("First_Date"), OtherString = raw1.Field<string>("OtherString") }
equals
new { ID = raw2.Field<string>("Second_Code"), Date = raw2.Field<DateTime>("Second_Date"), OtherString = raw2.Field<string>("OtherString") }
join raw3 in thirdDT.AsEnumerable() on
new { ID = raw1.Field<string>("First_Code"), Date = raw1.Field<DateTime>("First_Date"), OtherString = raw1.Field<string>("OtherString") }
equals
new { ID = raw3.Field<string>("Third_Code"), Date = raw3.Field<DateTime>("Third_Date"), OtherString = raw3.Field<string>("OtherString") }
join raw4 in fourthDT.AsEnumerable() on
new { ID = raw1.Field<string>("First_Code"), Date = raw1.Field<DateTime>("First_Date"), OtherString = raw1.Field<string>("OtherString") }
equals
new { ID = raw4.Field<string>("Fourth_Code"), Date = raw4.Field<DateTime>("Fourth_Date"), OtherString = raw4.Field<string>("OtherString") }
select datatable.LoadDataRow(new object[]
{
raw1.Field<string>("First_Code"),
raw1.Field<DateTime>("First_Date"),
raw1.Field<string>("OtherString"),
raw1.Field<decimal>("FirstPrice"),
raw2.Field<decimal>("SecondPrice")
raw3.Field<decimal>("ThirdPrice")
raw4.Field<decimal>("FourthPrice")
}, false);
data.CopyToDataTable();
抱歉,但不清楚你想要什么?如果我加入firstDT和secondDT,效果很好。如果我将第三个/额外的数据表添加到LINQ查询中,问题就开始了。第一个DT,第二个DT工作。第一个,第二个,第三个不工作。firstDT、secondDT、thirdDT、fourthDT不工作。我想知道InvalidPetationException/源不包含数据行的原因。换句话说,如何始终使用第一个数据表和多个列连接多个数据表。您确定第三个和第四个数据表至少有一行吗?否则,动态获取数据可能会失败。如果是这样的话,你可以查一下