Я хочу запросить список с помощью Linq, но отфильтровать по другому списку, содержащему два элемента (имя, статус) в моем примере. Это навеяно старым вопросом, который я адаптировал к своей проблеме. LINQ: содержит и лямбда-запрос (в этом ответе он работает только для одного элемент т.е. статус)
Я пытаюсь использовать метод "содержит", но не смог отфильтровать свой список.
Я должен получить результат только с двумя зданиями (два, пять). Кто-нибудь знает, где меня остановили?
Спасибо
Цитата
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;
}