gpt4 book ai didi

C# LINQ 获取字典计数

转载 作者:行者123 更新时间:2023-11-30 19:25:58 25 4
gpt4 key购买 nike

我得到一个带有 Entity Framework 的 LINQ 查询(EF) 并获取项目列表。现在我想创建一个字典,其中包含项目的递增索引和项目本身。

我是这样的:

result = context
.Items
.Where(b => !b.Deleted)
.OrderBy(b => b.Name)
.ToDictionary(COUNTHERE, b => b.Name)

所以字典必须看起来像这样:

1: "item1"
2: "item2"
3: "item5"
4: "item10"
5: "item100"

最佳答案

我认为你需要的是将项目名称作为键而不是计数作为键,因为如果有两个项目具有相同的计数,它将抛出已添加键的异常。

然后你可以在ToDictionary之前使用GroupBy,这样你就可以计数了。

result = context
.Items
.Where(b => !b.Deleted)
.GroupBy(x => x.Name)
.ToDictionary(g => g.Key, g => g.Count())
.OrderBy(g => g.Key);

根据你更新的评论,那么你需要的是

result = context
.Items
.Where(b => !b.Deleted)
.OrderBy(b => b.Name)
.AsEnumerable()
.Select((v,i) => new { i, v.Name })
.ToDictionary(g => g.i + 1, g => g.Name);

请注意,您需要添加 AsEnumerable 以便 Select 子句作为 linq to object (Select that accept index is not supported in L2S)。

关于C# LINQ 获取字典计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25844264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com