我有一个Brick
类型的数组,每个brick
都有一个isBroken
bool
属性。如何使用Linq
将isBroken = true
的所有砖块过滤到新数组中?
答案 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
将包含名称为A
和B
答案 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;