2013-06-20 4 views
1

Я хочу, чтобы иметь возможность группировать список элементов по определенному полю (id), а затем извлекать словарь идентификаторов, пар кодов. Затем мне нужно получить доступ к парам id и кода, чтобы сделать некоторую логику. как я могу это сделать с помощью linq?linq group by и выберите

например.

Id Code Send 
1 500 1 
1 501 0 
2 600 1 
2 601 0 
2 602 0 
3 700 0 
3 701 1 
3 702 0 
3 703 1 

Ожидаемый результат -

1 500,501 
2 600,601,602 
3 700, 701, 702, 703 

Это то, что я до сих пор - изо всех сил, чтобы решить, как получить только коды в словаре:

from i in items 
group i by i.Id into g 
select new Dictionary<Guid, List<long>> 
    { 
    g.Key, g.ToList() 
    } 

ответ

0

Вы можете сделать это например:

var res = items 
    .GroupBy(i => i.Id) 
    .ToDictionary(
     g => g.Key 
    , g => g.Select(v => v.Code).ToList() 
    ); 

Ваше решение было близко - вам нужно было добавить выбор Code, чтобы завершить его.

+0

Спасибо, работает !! –

0

последняя часть

g.ToList() 

должен быть

g.Select(c => c.Code).ToList()