Используя Linq для группировки списка объектов в новый сгруппированный список списка объектов

Это потому, что класс модели имеет другой набор полей, чем DTO, и ваш картограф отображает оба пути. Но это вполне естественно, у dto нет идентификатора.

Обходной путь должен состоять в том, чтобы исключить эти поля из сопоставления, например, путем аннотирования id и других полей в классе модели, которые не связаны с: Mapping("this").

127
задан GEOCHET 2 January 2019 в 21:09
поделиться

3 ответа

var groupedCustomerList = userList
    .GroupBy(u => u.GroupID)
    .Select(grp => grp.ToList())
    .ToList();
279
ответ дан 24 November 2019 в 00:43
поделиться

Все еще старый, но ответ от Lee не дал мне группу. Ключ как результат. Поэтому я использую следующее утверждение, чтобы сгруппировать список и возвратить сгруппированный список:

public IOrderedEnumerable<IGrouping<string, User>> groupedCustomerList;

groupedCustomerList =
        from User in userList
        group User by User.GroupID into newGroup
        orderby newGroup.Key
        select newGroup;

Каждая группа теперь имеет ключ, но также и содержит IGrouping, который является набором, который позволяет Вам выполнять итерации по членам группы.

-1
ответ дан 24 November 2019 в 00:43
поделиться

Оператор группы будет группировать по идентификатору группы. Например, если вы затем напишете:

foreach (var group in groupedCustomerList)
{
    Console.WriteLine("Group {0}", group.Key);
    foreach (var user in group)
    {
        Console.WriteLine("  {0}", user.UserName);
    }
}

, все должно работать нормально. Каждая группа имеет ключ, но также содержит IGrouping , который представляет собой коллекцию, которая позволяет выполнять итерацию по членам группы. Как упоминает Ли, вы можете преобразовать каждую группу в список, если действительно хотите, но если вы просто собираетесь перебирать их в соответствии с приведенным выше кодом, от этого нет никакой реальной пользы.

36
ответ дан 24 November 2019 в 00:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: