Foreach带有where子句?

Met*_*nix 4 c# foreach where

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

foreach(object obj in listofObjects where obj.property == false){
Run Code Online (Sandbox Code Playgroud)

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

Vse*_*nin 10

扩展mehtods很简单:

foreach(object obj in listofObjects.Where(w => !w.property))
Run Code Online (Sandbox Code Playgroud)


Sel*_*enç 9

您可以使用方法语法

foreach(object obj in listofObjects.Where(obj => !obj.property))
Run Code Online (Sandbox Code Playgroud)

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

foreach(object obj in (from x in listofObjects where !x.property select x))
Run Code Online (Sandbox Code Playgroud)

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

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

foreach(var obj in query) { }
Run Code Online (Sandbox Code Playgroud)