2011-03-23 53 views
0

Error after implementing the solution代碼,我必須通過LINQ

做到這一點我有我必須這樣做,通過LINQ

var airlineNameList = new List<string>(); 

foreach (DTTrip trip in contract_.Trips) 
{ 
    foreach (DTFlight flight in trip.ListOfFlights) 
    { 
     airlineNameList.Add(flight.AirLineName); 
    } 
} 

如何通過LINQ做一個代碼。 注意:contract_是類的對象。

請幫助..

回答

2
var resultList = contract_.Trips 
     .Cast<DTTrip>() 
     .SelectMany(trip => trip.ListOfFlights.Cast<DTFlight>()) 
     .Select(flight => flight.AirLineName) 
     .ToList(); 

難道你還需要Distinct

+0

它不工作bcoz ...但旅行返回DTcontract.Trips類型的arrayList .. – Shivi 2011-03-23 15:25:54

+0

@Shivi,首先你應該殺死'ArrayLists' :)你應該提前提及它。無論如何,我已經更新了答案。 – Snowbear 2011-03-23 15:28:21

+0

感謝您的快速回復..但我仍然geting一些錯誤..請參閱附件..在mu上面的問題 – Shivi 2011-03-23 15:42:12

4
var airlineNameList = contract_.Trips 
           .SelectMany(t => t.ListOfFlights) 
           .Select(f => f.AirLineName); 
+0

它不工作bcoz ...但旅程返回DTcontract.Trips類型的數組列表.. – Shivi 2011-03-23 15:27:03

+0

@Shivi - 我不明白什麼是不工作。你能提供一個例外或其他東西來提供更多細節嗎? – 2011-03-23 15:28:11

+0

他說他使用'ArrayLists',因此他的枚舉類型沒有強類型。 'SelectMany'和其他不工作的非泛型'IEnumerable' – Snowbear 2011-03-23 15:29:20

1
var airlineNameList = (
    from trip in contract_.Trips 
    from flight in trip.ListOfFlights 
    select flight.AirLineName) 
    .ToList(); 

的C#的foreach爲你所做的隱式轉換(這是呸),所以也許你需要這個:

var airlineNameList = (
    from trip in contract_.Trips.Cast<DTTrip>() 
    from flight in trip.ListOfFlights.Cast<DTFlight>() 
    select flight.AirLineName) 
    .ToList(); 
+0

我馬得到錯誤。 「無法在ArrayList上實現查詢模式」。 SelectMany not found「.. – Shivi 2011-03-23 15:50:23

+0

Thanks..for your help。Send option is working fine – Shivi 2011-03-23 15:55:53

+0

@Shivi:如果你能控制類層次結構,改變'Trips'和'ListOfFlights'屬性返回強類型集合。你的代碼更具可讀性,因爲它可以幫助你避免執行'Cast ()'調用並使你的代碼更安全。不會再添加任何信息。 – Steven 2011-03-23 17:03:52

相關問題