Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.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# 使用Linq减少嵌套循环_C#_Linq_Nested Loops - Fatal编程技术网

C# 使用Linq减少嵌套循环

C# 使用Linq减少嵌套循环,c#,linq,nested-loops,C#,Linq,Nested Loops,我想知道是否可以使用linq重写以下嵌套循环。这里的问题是,如果“value”包含在“item2”列表中,则返回“item2” 对于前两个循环使用SelectMany,对于第三个循环使用FirstOrDefault+Any,如果检查: return item1list.SelectMany(x1 => x1.items2list) .FirstOrDefault(x2 => x2.items3list.Any(x3 => x3 == value)

我想知道是否可以使用linq重写以下嵌套循环。这里的问题是,如果“value”包含在“item2”列表中,则返回“item2”


对于前两个循环使用
SelectMany
,对于第三个循环使用
FirstOrDefault
+
Any
,如果检查:

return item1list.SelectMany(x1 => x1.items2list)
                .FirstOrDefault(x2 => x2.items3list.Any(x3 => x3 == value));
您还可以用
包含(值)
替换
任何
调用


它更具可读性吗?可能不会。将3个循环放在一个带有描述性名称的私有方法中可能对以后阅读该代码的任何人都会更好。

那么,我可以问一下,您认为Linq做了什么,它与一系列循环有什么不同吗?@maccettura,它将其抽象为经过良好测试的函数运算符。我相信它不会,但是使用它使代码对我来说更具可读性…你是说
x3==value
(value而不是null)?
return item1list.SelectMany(x1 => x1.items2list)
                .FirstOrDefault(x2 => x2.items3list.Any(x3 => x3 == value));