2012-02-15 52 views
0

當priceList較小時,查詢會很快執行,但如果priceList有五個以上的元素,則查詢速度非常慢。如何優化與相交linq查詢?

if(!filters.Price.All && !filters.Price.IsEmpty()) 
{ 
    var priceList = filters.Price.GetRangeList(); 
    foreach (var price in priceList) 
    { 
     decimal startPrice = decimal.Parse(price[0]); 
     decimal endPrice = decimal.Parse(price[1]); 


     var priceResult = from deal in query 
          where (deal.DiscountPrice >= startPrice && deal.DiscountPrice <= endPrice) 
          select deal; 
     if(priceResult.Count() != 0) 
     priceResults = (priceResults == null) ? priceResult : priceResult.Union(priceResults); 
    } 


    query = query.Intersect(priceResults); 
} 
+0

什麼是查詢?什麼是'priceResults'?這是Linq2Sql,Linq2Entities,Linq2Objects? – cadrell0 2012-02-15 17:41:48

回答

2

我可能會誤解你的代碼,但據我所知,相交操作的結果將具有相同的對象priceResults列表 - 因此相交是完全沒有必要的(因此刪除它會相當優化)。 :-)

除非priceResults列表中有輸入此代碼塊之前的內容,只會有從查詢列表中的對象,所以找到兩者之間的交集總是會導致priceResults列表。

+0

謝謝。它是我的失敗。 – BILL 2012-02-15 17:44:08