2012-01-03 116 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