提供每个组中结果列表的Linq to Entities组查询

2ledvvac  于 2022-12-15  发布在  其他
关注(0)|答案(2)|浏览(136)

如果我有一组实体,它们有3个属性(Id、Type、Size),所有属性都是字符串。
是否有一种方法可以使用Linq to Entities来执行一个组查询,该查询将Size + Type作为键,然后提供与该Size + Type相关的ID列表?
下面是获取计数的示例:

Items.GroupBy(x => new { x.Size, x.Type})
     .Select(x => new { Key = x.Key, Count = x.Count() })

但我想得到每个分组的ID列表?
在我决定在代码中迭代并构建结果之前,我希望看看是否可以使用Linq-to-EF。

c2e8gylq

c2e8gylq1#

如果你想得到每个组的ID列表,那么你必须选择x.Select(r => r.Id),如:

var result = Items.GroupBy(x => new { x.Size, x.Type })
                  .Select(x => new
                    {
                        Key = x.Key,
                        Ids = x.Select(r => r.Id)
                    });
frebpwbc

frebpwbc2#

根据the docs在dotnet6.0中建立字典〈string,IEnumerable〈string?〉〉的另一种方法;其中我们有字典 Key 作为{Size,Type}和 Value 作为Id列表,你可以写:

Dictionary<string, IEnumerable<string?>> result = Items.GroupBy(item => new { item.Size, item.Type }
                                                       item => item.Id),
                                                       (itemKey, itemIds) =>
                                                       {
                                                            Key = itemKey,
                                                            Ids = itemIds
                                                       })
                                              .ToDictionary(x => x.Key, x=> x.Ids);

相关问题