gpt4 book ai didi

c# - 为什么在 ToDictionary 中使用 GroupBy 中的 key 时会收到 "key already added"错误?

转载 作者:行者123 更新时间:2023-12-01 23:22:19 25 4
gpt4 key购买 nike

我原以为 Linq GroupBy 总是会生成唯一的键,但是当我将 GroupBy 的结果投影到 Dictionary 中时使用 .ToDictionary() 时,我收到一条错误消息“已添加具有相同键的项目”:

enter image description here

这是有问题的代码:

return DbContext.Responsibilities
.GroupBy(r => r.RoleCode)
.ToDictionary(g => g.Key, g => g.Count());

[此处,Responsibilities 是实体的 DbSet,其 RoleCode 成员是一个简单的 int 属性。]

如果我更改它以生成一系列匿名类型,然后然后从中创建一个字典,它运行时不会出现错误:

return DbContext.Responsibilities
.GroupBy(r => r.RoleCode)
.Select(g => new { Code = g.Key, Count = g.Count() })
.ToDictionary(i => i.Code, i => i.Count);

为什么会产生如此大的差异?

仅供引用,如果我创建一个临时 List 变量来保存匿名类型,则其值如下:

enter image description here

所以,没有重复的键。

最佳答案

简单的 Google 搜索让我找到了这篇博文:

http://code-ninja.org/blog/2014/07/24/entity-framework-never-call-groupby-todictionary/

简单的答案是 ToDictionary 不会转换为 Entity Framework 查询,但它会枚举 Group By 的结果。

关于c# - 为什么在 ToDictionary 中使用 GroupBy 中的 key 时会收到 "key already added"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58993297/

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