【发布时间】:2020-07-29 00:37:33
【问题描述】:
这在 linq 查询中。
我今天在使用 Linq 时遇到了很多麻烦。
考虑一下 Linq 查询中的这一行:
EnginePartNames = x.EngineParts.Select(t => t.PartId).ToList(),
左边EnginePartNames是一个字符串类型的ICollection。
右侧,x.EngineParts.Select(t => t.PartId).ToList(),是一个 long 类型的通用列表。
我有这本词典:
Dictionary<int, string> partName = new Dictionary<int, string>()
{
{5763, "5.7 Engine"},
{3511, "8-speed Transmission"},
{8552, "Crankshaft"},
{9127, "Cylinder Heads" }
};
如何遍历我的 linq 查询中的右侧列表,并将每个 PartId 替换为 partName 字典中的字符串?
我试过了:
EnginePartNames = partName[x.EngineParts.Select(t => t.PartId)].ToList()
但它给了我这个错误:
无法从“System.Collections.Generic.IEnumerable”转换为 'int'
所以我知道将 select 语句中的值转换为字典中的 int 存在问题。
所以我尝试了这个:
EnginePartNames = partName[Convert.ToInt32(x.EngineParts.Select(t => t.PartId))].ToList()
并得到这个错误:
无法隐式转换类型“System.Collections.Generic.List” 到“System.Collections.Generic.ICollection”。明确的 存在转换(您是否缺少演员表?)
所以在这一点上我有点迷路了...我不知道接下来要尝试什么...
有什么想法吗?
谢谢!
【问题讨论】:
标签: c# linq dictionary asp.net-core