LINQ - Список в списке фильтрации - PullRequest
0 голосов
/ 03 января 2012

У меня есть эти классы:

public class Flight
{
    public string FlightNum { get; set; }
    public List<Pax> Pax { get; set; }
}

public class Pax
{
    public string PaxName { get; set; }
    public string PaxSurName { get; set; }
}

Я хочу отфильтровать рейс так, чтобы он содержал только рейсы, имя пассажира которых является определенной строкой Я пытался:

var paxList = flights.Where(f => f.Pax.Where(p => p.PaxName == "d"));

Приведенный выше код не работал ... например: я хочу это в ОДНОМ лямбда-выражении

1 Ответ

8 голосов
/ 03 января 2012

Where нужна функция, которая возвращает boolean.

var paxList = flights.Where(f => f.Pax.Any(p => p.PaxName == "d"));

Вложенное выражение f.Pax.Any(p => p.PaxName == "d") вернет true, если any p соответствует критерию PaxName - это ровно "d".

И, следовательно, итоговый список будет состоять из рейсов (не пассажиров), которые содержат пассажиров, соответствующих этому критерию.Я упоминаю об этом, потому что paxList потенциально не является хорошим именем переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...