Bo *_*ods 9 c# linq entity-framework-core ef-core-2.0
我有以下代码,导致System.ArgumentException
:
已添加具有相同键的项目.重点:PH
_HotelsByCountry = db.Hotels
.GroupBy(hotel => hotel.CountryCode)
.ToDictionary(group => group.Key, group => group.ToList());
Run Code Online (Sandbox Code Playgroud)
这是否意味着组密钥是不唯一的在使用时GroupBy
操作?
更新 hotel.CountryCode
是类型string
.
更新 CountryCode
是外键.
更新 sql server和ef core 2.0
更新以下代码的工作原理
_HotelsByCountry = db.Hotels
.GroupBy(hotel => hotel.CountryCode.Trim())
.ToDictionary(group => group.Key, group => group.ToList());
Run Code Online (Sandbox Code Playgroud)
您可以使用ToLookup代替
var x = db.Hotels.ToLookup(hotel => hotel.CountryCode);
Run Code Online (Sandbox Code Playgroud)
对于那些想了解背后代码的人ToLookup
可以查看Microsoft Github 存储库
基本上ToLookup
用于EqualityComparer<TKey>.Default
比较键并执行在使用 group by 和字典时手动执行的操作。
我不确定,但是 linqpad 没有显示任何将 ToLookup 转换为 SQL 查询的迹象,所以我认为它是在内存中执行的