使用Linq将bool属性为true的数组过滤到另一个数组

时间:2017-07-07 10:58:13

标签: c# linq

我有一个Brick类型的数组,每个brick都有一个isBroken bool属性。如何使用LinqisBroken = true的所有砖块过滤到新数组中?

3 个答案:

答案 0 :(得分:2)

使用Where过滤砖块列表和ToArray以将结果具体化为新数组。

var result = MyBricksArray.Where(x => x.isBroken).ToArray();

答案 1 :(得分:0)

我希望example能够更清楚地解释事情,让你的班级定义如下:

public class Brick
{
  public string Name;
  public bool isBroken ;
}

它的对象数组定义如下:

Brick[] BrickArray =new Brick[]{
                    new Brick(){Name="A",isBroken=true},
                    new Brick(){Name="B",isBroken=true},
                    new Brick(){Name="C",isBroken=false}};

然后您可以使用.Where过滤集合,如下所示:

var selectedBriks = BrickArray.Where(x=>x.isBroken).ToList();

现在selectedBriks将包含名称为AB

的项目

答案 2 :(得分:-1)

您可以使用select方法:

var theNewList = Brick.Where(b => b.isBroken).Select(b => new Brick
{
    //Populate new object
}).ToList() / .ToArray(); 

请注意,使用了Select,而不是将List投影到新的位置。

另外,。ToList()/ ToArray()是将数组添加到内存中,您可能不需要它。.Select()返回一个IEnumerable。 可以使用Brik.Where(..)。ToList();因为这将创建一个新的List,但对列表中对象的引用将是相同的,所以它再次取消了你的需要。 并且.Select()需要using System.Linq;