Foreach带有where子句?

时间:2014-12-29 17:10:11

标签: c# foreach where

在C#中是否有这样的结构,我可以说类似于以下内容:

foreach(object obj in listofObjects where obj.property == false){

这样它只会遍历集合中特定的对象子集?

5 个答案:

答案 0 :(得分:9)

简单的扩展方法:

foreach(object obj in listofObjects.Where(w => !w.property))

答案 1 :(得分:9)

您可以使用方法语法

foreach(object obj in listofObjects.Where(obj => !obj.property))

也可以使用查询语法,但它不可读(至少对我来说):

foreach(object obj in (from x in listofObjects where !x.property select x))

如果您要使用它,我会将查询存储到变量中:

var query = (from x in listofObjects 
             where !x.property  
             select x);

foreach(var obj in query) { }

答案 2 :(得分:3)

LINQ:

foreach( var obj in listofObjects.Where( q => q.property == false ) )
    ...

答案 3 :(得分:2)

你可以这样做:

foreach (var obj in listOfObjects.Where(o => !o.Property))
{
    // ...
}

答案 4 :(得分:1)

您可以使用Where扩展方法和lambda。来自Linq。

确保您引用了System.Linq命名空间。

 foreach (var obj in listOfObjects.Where(obj => obj.property == false))