2013-06-20 50 views
1

我希望能够按特定字段(id)对项目列表进行分组,然后提取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()