2012-02-15 16 views
0

priceListが小さい場合、クエリは迅速に実行されますが、priceListに5つ以上の要素がある場合、クエリは非常に遅くなります。どのように交差で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

答えて

2

私はあなたのコードを誤解するかもしれないが、私の知る限り、INTERSECT操作の結果がpriceResultsなどのオブジェクトのリストが同じになりますが - (それがされる取り除くので、交差は全く不要ですかなりの最適化)。 :-)

このコードブロックを入力する前にpriceResultsリストに内容がある場合を除き、クエリリストのオブジェクトのみが存在するため、2つの間の交差を見つけると常にpriceResultsリストになります。

+0

ありがとうございます。その私の失敗。 – BILL

関連する問題