Преобразование списка IEnumerable в сгруппированный список в Linq - PullRequest
1 голос
/ 01 сентября 2010

У меня есть функция, которая возвращает следующий тип:

 IEnumerable<IGrouping<String, ExportTransaction>>

В этой функции я создаю список следующего типа, используя выражение linq:

  IEnumerable<ExportTransaction>

LinqКод выглядит следующим образом:

 IEnumerable<ExportTransaction> transactions = ctx.ExportTransactions
                                                  .Where(x => x.Id != null);

Как я могу преобразовать «транзакции» в сгруппированный список типа, показанного в верхней части этой страницы.Функция выполняет различные операции с «транзакциями», поэтому она должна оставаться внутри функции как «IEnumerable», но при возвращении должна быть преобразована в сгруппированный список.

Ответы [ 2 ]

1 голос
/ 01 сентября 2010

Я предполагаю, что транзакции имеют свойство name, и это то, для чего вы хотите сгруппировать транзакции.Если это не так, все, что вам нужно сделать, это изменить свойство в вызове GroupBy:

var transactions = ctx.ExportTranactions
                      .Where(x => x.Id != null)
                      .GroupBy(x => x.Name);
0 голосов
/ 01 сентября 2010

Действительно ли это нужно сгруппировать, и если да, то что вы хотите сгруппировать по ?Мне кажется, что у вас есть набор данных, и вы можете пытаться преобразовать его в формат, который вам не обязательно нужен.

Как правило, для группировки набора данных вам нужно сделать что-то вроде:

var grouping = ctx.ExportTransactions.Where(x => x.Id != null)
                                     .GroupBy(x => x.Description);

Это создаст IEnumerable<IGrouping<string, ExportTransaction>>, группирующую все транзакции с одинаковым описанием, при условии, что каждая транзакция имеет описание.

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

    var grouping = ctx.ExportTransactions.Where(x => x.Id != null)
                                     .GroupBy(x => string.Empty);

Что даст вам то, что вам нужно, с ключом группы, являющимся пустой строкой, но я бы настоятельно посоветовал против нее и вместо этого предложил бы посмотреть, зачем вамвернуть группировку, если вы, кажется, не хотите группировать что-либо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...