【发布时间】:2016-10-19 20:06:09
【问题描述】:
我想通过 Linq 查询一个列表,但在我的示例中通过另一个包含两个元素(名称、状态)的列表进行过滤。 这是受到我已经适应我的问题的一个老问题的启发。 LINQ: "contains" and a Lambda query (在这个答案中,它只适用于一个元素,即状态)
我尝试使用“包含”方法,但未能成功过滤我的列表。
我应该得到一个只有两座建筑物(二、五)的结果 有人知道我在哪里停下来吗?
谢谢
块引用
public class Building
{
public enum StatusType
{
open,
closed,
weird,
};
public string Name { get; set; }
public StatusType Status { get; set; }
}
private static readonly List<Building> BuildingList = new List<Building>()
{
new Building() {Name = "one", Status = Building.StatusType.open},
new Building() {Name = "two", Status = Building.StatusType.closed},
new Building() {Name = "three", Status = Building.StatusType.weird},
new Building() {Name = "four", Status = Building.StatusType.open},
new Building() {Name = "five", Status = Building.StatusType.closed},
new Building() {Name = "six", Status = Building.StatusType.weird},
};
private void GetResult()
{
var buildingSelect = new List<Building>
{
new Building() {Name = "two", Status = Building.StatusType.closed},
new Building() {Name = "five", Status = Building.StatusType.closed}
};
var q = (from building in BuildingList
where buildingSelect.Contains(building.Name, building.Status)
select building).ToList();
dataGridView1.DataSource = q;
}
【问题讨论】: