C# 如何将foreach循环转换为linq
代码:C# 如何将foreach循环转换为linq,c#,linq,c#-4.0,if-statement,foreach,C#,Linq,C# 4.0,If Statement,Foreach,代码: 对于上述代码,如何将foreach循环转换为linq?谢谢。有时候“将{x}转换为LINQ”的正确方法是:不要。它不是适合每项工作的工具。您当前使用的foreach和字典变异的代码仍然很好。留着吧 foreach (var item in testItems.Distinct()) { if (!testMap.ContainsKey(item.GetId())) {
对于上述代码,如何将foreach循环转换为linq?谢谢。有时候“将{x}转换为LINQ”的正确方法是:不要。它不是适合每项工作的工具。您当前使用的
foreach
和字典变异的代码仍然很好。留着吧
foreach (var item in testItems.Distinct())
{
if (!testMap.ContainsKey(item.GetId()))
{
testMap.Add(item.GetId(), item);
}
}
如果重复的ID(在Distinct()
之后)不是问题,您可以执行以下操作:
testItems.ToList().ForEach(item=>
{
if (!testMap.ContainsKey(item.GetId()))
{
testMap.Add(item.GetId(), item);
}
});
但就是这样。有时“将{x}转换为LINQ”的正确方法是:不要。它不是适合每项工作的工具。您当前使用的
foreach
和字典变异的代码仍然很好。留着吧
如果重复的ID(在Distinct()
之后)不是问题,您可以执行以下操作:
testItems.ToList().ForEach(item=>
{
if (!testMap.ContainsKey(item.GetId()))
{
testMap.Add(item.GetId(), item);
}
});
但仅此而已。对于单行版本,您可以尝试以下方法:
var map = testItems.Distinct().ToDictionary(x => x.GetId());
这将在一行中完成整个操作,尽管我不太喜欢同时完成所有操作,因为调试可能会更困难。对于单行版本,您可以尝试以下方法:
var map = testItems.Distinct().ToDictionary(x => x.GetId());
这将在一行中完成整个操作,尽管我不太喜欢同时完成所有操作,因为调试起来会比较困难。为什么要将其转换为LINQ?这不是一个疑问。。。另外:什么是
testMap
?testMap
是字典?您考虑过使用集合吗?@astef,是的,testMap
是字典。为什么要将其转换为LINQ?这不是一个疑问。。。另外:什么是testMap
?testMap
是字典?你考虑过使用集合吗?@astef,是的,testMap
是字典。这是否真的是LINQ的有用用法,甚至它是否真的是LINQ,都值得怀疑。。。最终,它基本上与原始问题中的代码相同,除了没有distinct之外,还有一个额外的ToList()
,还有许多额外的委托间接指向。@Marc,I aggree,我以前从未遇到过linq的如此琐碎的用法。这是否真的是linq的有用用法,甚至它是否真的是linq,都值得怀疑。。。归根结底,它与原始问题中的代码基本相同,只是没有distinct,有一个额外的ToList()
,还有许多额外的委托间接寻址。@Marc,我aggree,我以前从来没有遇到过linq的这种微不足道的用法。