2011-03-23 74 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