您可以在迭代期间在LINQ语句中实时设置/更新值吗?

根据我对其他问题的建议答案…是否可以在LINQ枚举期间更新变量,以便将其用作测试的一部分?

例如,这样的事情可能吗?

// Assume limitItem is of type Foo and sourceList is of type List // Note the faux attempt to set limitItemFound in the TakeWhile clause // That is what I'm wondering. sourceList.Reverse() .TakeWhile(o => (o != limitItem) && !limitItemFound; limitItemFound = limitItemFound || (o == limitItem) ) .FirstOrDefault(o => ...); 

这将使搜索包含limitItem。

对于LINQ to Objects(接受委托 ),你可以,是的 – 使用语句lambda

 sourceList.Reverse() .TakeWhile(o => { ... fairly arbitrary code here return someValue; }) .FirstOrDefault(o => ...); 

强烈反对你不这样做。 这将使得理解正在发生的事情变得更加困难,因为你正在失去习惯性LINQ代码的声明性质。