Сгруппировать в словарь элементов - PullRequest
33 голосов
/ 24 марта 2011

Привет! У меня есть список элементов типа class1, как показано ниже.Как мне сгруппировать их в

Dictionary<int,List<SampleClass>> на основе groupID

class SampleClass
{
   public int groupID;
   public string someData;
 }                                                                                  

Я сделал так:

var t =(from data in datas group data by data.groupID into dataGroups select dataGroups).ToDictionary(gdc => gdc.ToList()[0].groupID, gdc => gdc.ToList());

Есть ли лучший способделает это

1 Ответ

66 голосов
/ 24 марта 2011

Будет эффективнее заменить:

gdc => gdc.ToList()[0].groupID

на:

gdc => gdc.Key

Кроме этого, похоже, что я бы сделал.

Поочередно, если у вас все в порядке с методами расширения через LINQ (я лично предпочитаю их), его можно еще больше сократить с помощью:

var t = data.GroupBy(data => data.groupID).ToDictionary(gdc => gdc.Key, gdc => gdc.ToList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...