LINQ - 列表过滤中的列表

时间:2012-01-03 11:41:15

标签: .net linq list lambda

我有这些课程:

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"));

上面的代码不起作用...... 例如:我想在一个单一的Lambda表达式中使用

1 个答案:

答案 0 :(得分:8)

Where需要一个返回boolean

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

如果任何 f.Pax.Any(p => p.PaxName == "d")符合p正好PaxName的标准,则嵌套表达式"d"将返回true。

因此得出的列表将包含符合该标准的任何乘客的航班(而不是乘客)。我之所以提到这一点,是因为paxList可能不是一个好的变量名。