Как сгруппировать по двум ключам с linq-es2015? - PullRequest
0 голосов
/ 23 июня 2018

Короткий вопрос: Как сгруппировать по двум клавишам с помощью linq-es2015 в приложении Angular?

Один ключ работает хорошо, но я понятия не имел, как добавить другой ключ.

var results = asEnumerable(fieldtoregion)
      .GroupBy(x => x.regionId, x => x, (key, b) => {
        return { regionId: key, fields: asEnumerable(b).ToArray() }
      }).ToArray();

Второе имя ключа: isCollection. Я попробовал:

  1. x => {r: x.regionId, c: x.isCollection}
  2. x => ({r: x.regionId, c: x.isCollection})
  3. x => ("$ x.regionId $ x.isCollection")

Любая помощь будет очень полезна!

Вот класс TypeScript для тестирования:

export class FieldViewModel {
  id!: number;
  postId!: number;
  pageId!: number;
  regionId?: string | undefined;
  translationId!: number;
  clrType?: string | undefined;
  fieldId?: string | undefined;
  isCollection!: boolean;
}

1 Ответ

0 голосов
/ 23 июня 2018

Вы можете попробовать использовать только третий и четвертый параметр для группировки.Строка группировки состоит из двух свойств с пробелом.

var results = asEnumerable(fieldtoregion)
        .GroupBy(
            null,
            null,
            (key, b) => ({ regionId: key, fields: asEnumerable(b).ToArray() }),
            "$.regionId + ' ' + $.isCollection"
        )
        .ToArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...