Приведение в группирующую строку

#c# #.net #linq #ado.net

#c# #.net #linq #ado.net

Вопрос:

Я не знаю, почему я получаю следующее исключение, как я могу привести к группировке строк? Что означает группировка строк

введите описание изображения здесь

Комментарии:

1. Я удивлен, что это вообще компилируется.

Ответ №1:

Быстрый ответ: измените код на

 foreach(var InvoiceHeader in InvoiceHeadercollection)
  

Код linq сгенерировал новый класс, который вы можете представить следующим образом:

 class AutoGeneratedClass :  IEnumerable<DataRow>
{
    public string Key { get; }  // The InvoiceAccount field
}
  

(Это не называется «AutoGeneratedClass»; я просто использую это, чтобы оно соответствовало известному нам синтаксису). Поскольку для этого автоматически сгенерированного класса нет имени, вы должны использовать «var».

Комментарии:

1. тогда я получу поле on<строка> (..)

Ответ №2:

Посмотрите на ваш запрос LINQ, который вы используете group by InvoiceHeaderCollection это не набор строк данных, это IGrouping<DataRow> отдельная группа для каждой отдельной «учетной записи счета». — что вы хотели сделать с группировкой? Или вы намеревались упорядочить свои строки по учетной записи Invoice?

Ответ №3:

InvoiceHeaderCollection это набор групп, группы представляют собой что-то вроде:

       Key               Value
 invoice account1      datarow1 //the value is a `DataRow`
                       datarow2
                       datarow4
 invoice account2      datarow3
 invoice account3      datarow5 
  

Итак, я думаю, вам нужно:

 foreach(var g in InvoiceHeaderCollection)
{
    DataRow[] rows = g.ToArray();   //to get all the DataRows in the group
    //maybe another loop through the rows
}