Группировать по нескольким столбцам — LINQ

#c# #linq

#c# #linq

Вопрос:

Я видел примеры умножения группы по столбцам, но для классов. Я пытаюсь сделать это для EnumerableDataRowList. но я получаю «Недопустимый аноним-член типа declarator».

                     EnumerableDataRowList<DataRow> enumerableRowCollection = new EnumerableDataRowList<DataRow>(reportData.Select("WeekKey <> '0'"));


                var groupedRows1 = from row in enumerableRowCollection
                                  group row by new {row["NETWORK"], row["Week"] };
  

кроме того, я видел, как некоторые люди объединяли столбцы в каком-то случае, чтобы получить одинаковые результаты. Есть ли польза в том, чтобы делать это таким образом

Ответ №1:

Вы должны присвоить значениям идентификатор:

          var groupedRows1 = from row in enumerableRowCollection
                            group row by new { Network = row["NETWORK"], Week = row["Week"] };
  

Обычно вам не требуется указывать идентификатор, если вы используете ссылку на поле или свойство, поскольку это просто повторно использует имя этого элемента — но в этом случае вы обращаетесь к свойству индексатора, поэтому нет способа получить из него имя.