2011-05-06 66 views
-1

嗨如果輸入類「DtContract」,我有一個數組列表。我如何使用LINQ的屬性

ArrayList listOfContracts_; 

foreach (DTContract contract in listOfContracts_) 
{ 
    if (contract.Engine != DTIsland.EngineType.AMADEUS && contract.Engine !=DTIsland.EngineType.SABRE) 
        continue; 
} 

我想通過LINQ來做到這一點。 我想篩選合約,其EngineType == AMADEUS && EngineType == SABRE。請建議我如何通過Linq來完成,並在List或數組列表中獲得結果。

我這樣做是爲了優化代碼。

請幫助...

+1

你想優化速度或提高可讀性?因爲將這個'foreach'循環轉換爲Linq查詢不會提高速度。 – 2011-05-06 14:22:54

+0

@Elian:那我該如何改進呢?請建議.. – Shivi 2011-05-06 14:31:49

+0

您的代碼中缺少構造函數調用和'listOfContracts_.add(contract)'。 什麼Elian是,這個linq將在內部執行相同的操作,當前的操作,並且從性能的角度來看沒有什麼可以優化的)。 – Nappy 2011-05-06 14:47:16

回答

1
var result = listOfContracts_.Where(contract=>contract.Engine != DTIsland.EngineType.AMADEUS && contract.Engine !=DTIsland.EngineType.SABRE).ToList(); 
0

您的foreach循環doen't做任何有意義,你正在試圖達到什麼目的?

如果你想使用LINQ

listOfContracts_.OfType<DTContract>() 
    .Where(contract => contract.Engine != DTIsland.EngineType.AMADEUS && 
         contract.Engine != DTIsland.EngineType.SABRE); 
相關問題