C# 使用Linq获取不同的行
我使用linq对数据进行分组,正如您从下面的代码中所看到的,在分组之后,我希望对分组数据进行交互并添加到另一个表中 但是我只得到InvoiceHeader.Key,我不知道如何获得其他字段C# 使用Linq获取不同的行,c#,.net,linq,ado.net,C#,.net,Linq,Ado.net,我使用linq对数据进行分组,正如您从下面的代码中所看到的,在分组之后,我希望对分组数据进行交互并添加到另一个表中 但是我只得到InvoiceHeader.Key,我不知道如何获得其他字段 DataTable VendorInvoiceStagingTable; DataTable VendorInvoiceTable; VendorInvoiceStagingTable = new Program().ReadExcelFile(@"C:\Use
DataTable VendorInvoiceStagingTable;
DataTable VendorInvoiceTable;
VendorInvoiceStagingTable = new Program().ReadExcelFile(@"C:\Users\huzaifa.gain\Desktop\Vendor invoice import - sample data set.xlsx", "Sheet2");
var InvoiceHeadercollection = from row in VendorInvoiceStagingTable.AsEnumerable()
group row by row.Field<string>(VendInvoice.Number) into grp
select grp;
VendorInvoiceTable = new Program().CreateHeader();
foreach (var InvoiceHeader in InvoiceHeadercollection)
{
VendorInvoiceTable.Rows.Add(InvoiceHeader.Key, .....
}
由于InvoiceHeader是一个实现IEnumerable的函数,您可以简单地枚举组中的项,因此您可以只使用foreach循环:
@huzaifa如果你说明为什么它对你不起作用,那么回答你的问题会有帮助。您引用的帖子有一个不同的问题,它引发异常。无法强制转换,您可以在附加到链接的图像中看到异常。这不应该引发异常,您尝试过吗?请注意,我们在内部循环中枚举行,而在外部循环中没有对DataRow的强制转换。
foreach (var InvoiceHeader in InvoiceHeadercollection)
{
foreach(var row in InvoiceHeader)
VendorInvoiceTable.Rows.Add(row);
}