1

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

例如

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

3 回答 3

1

你可以这样做:

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

您的解决方案很接近 - 您需要添加选择Code来完成它。

于 2013-06-20T13:17:10.817 回答
1

最后一部分

g.ToList() 

需要是

g.Select(c => c.Code).ToList()
于 2013-06-20T13:19:30.820 回答
0

在我看来,LINQ 已经有一个操作员可以做到这一点。

ILookup<Guid, long> res = items.ToLookup(i => i.Id, i => i.Code);
于 2020-04-09T05:39:29.037 回答