分组和选择在LINQ

本文关键字:LINQ 选择 | 更新日期: 2023-09-27 18:19:25

我希望能够按特定字段(id)对项目列表进行分组,然后提取id,代码对的字典。然后,我需要访问id和代码对来执行一些逻辑操作。我如何使用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()
   }

分组和选择在LINQ

你可以这样做:

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

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

最后一部分

g.ToList() 

必须是

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

在我看来,LINQ已经有一个这样做的操作符了。

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