尝试使用 LINQ 创建字典时出现转换错误
Posted
技术标签:
【中文标题】尝试使用 LINQ 创建字典时出现转换错误【英文标题】:Conversion Error when trying to create dictionary with LINQ 【发布时间】:2021-08-22 10:39:54 【问题描述】:我正在用 C# 编写程序,但遇到了问题。
this.ProcessCache = new Dictionary<ProcessCacheEntry, Process>(Process.GetProcesses().Select(p => new KeyValuePair<ProcessCacheEntry, Process>(new ProcessCacheEntry(p), p)));
这是我得到的错误:
错误 CS1503 参数 1:无法从 'System.Collections.Generic.IEnumerable
>' 转换为 'int'
但 this.ProcessCache
是 Dictionary<ProcessCacheEntry, Process>
不是 int!
【问题讨论】:
给你的小提示:你可以把所有的代码放在一行中,并不意味着你应该,阅读起来很糟糕 我会使用ToDictionary 方法,它应该更短。 Dictionary您应该使用 ToDictionary 而不是新的 KeyValue 构造函数
如何初始化:
var allProcess = Process.GetProcesses();
var yourDictionary = allProcess.ToDictionary(ToProcessCacheEntry);
ToProcessCacheEntry 方法:
private ProcessCacheEntry ToProcessCacheEntry(Process process)
return new ProcessCacheEntry(process);
【讨论】:
您已经编辑了您的答案,直到它不再起作用。另外,你的静态方法是无用的。 @Steeeve 编辑前的答案将第二个参数添加到 ToDictionary,这是没用的。关于静态函数,它是静态的事实是无用的(只是在一个新项目上尝试了该代码,我将编辑),关于创建的分离,我喜欢这样,所以代码会更具可读性,所以我认为它看起来更好,除此之外,这是您可以对事物进行单元测试的另一个地方 ToDictionary 扩展方法没有重载,它接受单个 Func以上是关于尝试使用 LINQ 创建字典时出现转换错误的主要内容,如果未能解决你的问题,请参考以下文章
尝试创建计划任务时出现Powershell错误?无法处理参数“参数”的参数转换
尝试从 Pandas DataFrame 中的字典访问第一个值时出现浮点错误
Python json.load JSONDecodeError:尝试加载多个 json 字典时出现额外数据错误