私はこのコードを持っている:料金表はより多くの10の値を持つ場合このLINQ式を最適化する方法は?
var query = from deal in db.Deals
where deal.EndDate >= DateTime.UtcNow
select deal;
var priceList = filters.Price.GetPriceRangeList();
foreach(var price in priceList)
{
var startPrice = price.StartPrice;
var endPrice = price.EndPrice;
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 = priceResults != null ? query.Intersect(priceResults) : Enumerable.Empty<Deal>().AsQueryable();
私のクエリが遅いです。
私はフィルターとしてIntersectを使用しています。
これらのクエリを最適化するにはどうすればよいですか?最適化のための
何が 'であります以下同じ結果を持っている必要がありますが、それは上記の3つの問題の代わりに各組合のための反復処理の
を持っていないと信じてクエリ '? Btw、 'priceResult.Count()!= 0'を' priceResult.Any() 'に変更する必要があります。後者は1つのアイテムだけを繰り返しますが、すべてをカウントします。 –LINQ to Objects、LINQ to SQLなど?オブジェクト私はあなたのTakeWhileユニオン – jason
LINQ私はそのようなリクエストを3回行います。if(!filters.City.All &&!filters.City.IsEmpty()) { var cities = filters.City.ToArray(); query =クエリ内の取引 cities.Any(i => i.Equals(deal.City.Name)) select deal; } ' – BILL