C# 使用Linq获取不同的行

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

我使用linq对数据进行分组,正如您从下面的代码中所看到的,在分组之后,我希望对分组数据进行交互并添加到另一个表中

但是我只得到InvoiceHeader.Key,我不知道如何获得其他字段

        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);
}