linq group by和select

时间:2013-06-20 13:12:52

标签: linq select group-by

我希望能够按特定字段(id)对项目列表进行分组,然后提取id,代码对的字典。然后我需要访问id和代码对来做一些逻辑。我怎么能用linq做到这一点?

e.g。

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()
   }

3 个答案:

答案 0 :(得分:0)

你可以这样做:

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

您的解决方案已经关闭 - 您需要添加一些Code来完成它。

答案 1 :(得分:0)

最后一部分

g.ToList() 

需要

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

答案 2 :(得分:0)

在我看来LINQ已经有一个运算符可以做到这一点。

ILookup<Guid, long> res = items.ToLookup(i => i.Id, i => i.Code);