2012-01-03 112 views
0

我有这些类:LINQ - 一个列表过滤中列出

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表达式

+0

当然是行不通的,如果需要返回布尔函数求,但如果本身返回新的IEnumerable – 2012-01-03 11:48:41

回答

8

Where需要返回boolean的函数。

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

嵌套表达f.Pax.Any(p => p.PaxName == "d")将返回true,如果任何p标准匹配PaxName正是"d"

因此,结果列表将包含任何满足该标准的乘客的航班(不是乘客)。我提到这是因为paxList可能不是一个好的变量名。

+0

或。所有()如果所有PaxName的需求是“d” – 2012-01-03 11:50:28

+0

这是惊人的 – 2012-01-03 11:51:25

+0

@Pauli - 将是一个非常奇怪的飞行!每个人都可以为同名的人参加聚会。 :) – 2012-01-03 11:51:44