5

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

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

// Assume limitItem is of type Foo and sourceList is of type List<Foo> 

// 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。

4

1 回答 1

7

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

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

不过,我强烈建议您不要这样做。这将使理解正在发生的事情变得更加困难,因为您正在失去惯用 LINQ 代码的声明性。

于 2013-10-03T16:44:01.940 回答