C# 使用Linq减少嵌套循环
我想知道是否可以使用linq重写以下嵌套循环。这里的问题是,如果“value”包含在“item2”列表中,则返回“item2”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)
对于前两个循环使用
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));