Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将foreach循环转换为linq_C#_Linq_C# 4.0_If Statement_Foreach - Fatal编程技术网

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的这种微不足道的用法。