You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用LINQ的ToDictionary创建以元组(int,int)为键的字典?

关于使用复合主键创建LINQ字典的问题

可以编写类似的LINQ查询,但需要修正一处语法错误。你的代码里键选择器的lambda表达式写法有误,正确的写法应该是将两个主键字段包装成值元组作为字典的键:

Dictionary<(int, int), object> entity = _context.Table.ToDictionary(i => (i.IDOrigin, i.IDDestiny), o => o);

关键说明:

  • C#的ValueTuple(值元组)可以直接作为字典的键,因为它默认实现了GetHashCode()和Equals()方法,能正确处理哈希和相等性判断,完全符合字典键的要求。
  • 你之前的错误在于把lambda表达式的参数和返回值写成了逗号分隔的形式,正确的做法是在lambda的主体部分返回一个元组(i.IDOrigin, i.IDDestiny)。
  • 这种方式完美适配复合主键的场景,能通过两个字段的组合唯一标识每个实体,和单一键的字典用法逻辑一致,只是键的类型从单一值变成了值元组。

如果你的实体类型不是object,建议替换成具体的实体类型,这样能获得更好的类型安全性,比如:

Dictionary<(int, int), YourEntityType> entity = _context.Table.ToDictionary(i => (i.IDOrigin, i.IDDestiny), o => o);

内容的提问来源于stack exchange,提问作者Weenhallo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:55:32