#c# #.net #linq #ado.net
#c# #.net #linq #ado.net
Вопрос:
Я группирую данные с помощью linq как вы можете видеть из следующего кода, после объединения я хочу взаимодействовать с данными группы и добавлять в другую таблицу.
Но я получаю только InvoiceHeader.Ключ, я не знаю, как получить другие поля
DataTable VendorInvoiceStagingTable;
DataTable VendorInvoiceTable;
VendorInvoiceStagingTable = new Program().ReadExcelFile(@"C:Usershuzaifa.gainDesktopVendor 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, .....
}
Ответ №1:
Поскольку InvoiceHeader
это IGrouping
реализация IEnumerable
, вы можете просто перечислить элементы в группе, поэтому вы можете просто использовать foreach
цикл:
foreach (var InvoiceHeader in InvoiceHeadercollection)
{
foreach(var row in InvoiceHeader)
VendorInvoiceTable.Rows.Add(row);
}
Комментарии:
1. @huzaifa это помогло бы ответить на ваш вопрос, если бы вы указали, почему у вас это не сработает. Сообщение, на которое вы ссылаетесь, имеет другую проблему
2. Это вызывает исключение. не удается выполнить приведение, вы можете увидеть исключение на изображении, прикрепленном к ссылке
3. это не должно вызывать исключение, вы пробовали это вообще? обратите внимание, что существует внутренний цикл, в котором мы перечисляем строки, и во внешнем цикле нет преобразования в DataRow.