2010-08-16 100 views
0

我需要在泛型集合上運行LINQ。
當前查詢運行在一個非常緩慢的步伐...優化LINQ OrderByDescending查詢

var patternsWithMaxLenArray = totalPatterns 
    .Where 
    (
     pattern => pattern.Contains(maxLen) && 
        pattern.All(lenInPattern => curQuantities.Keys.Contains(lenInPattern)) && 
        pattern.GroupBy(len => len).All(g => g.Count() <= curQuantities[g.Key]) 
    ) 
    .Select(pattern => new { pattern = pattern, sum = pattern.Sum() }) 
    .ToArray(); 

var patternsWithMaxLen = patternsWithMaxLenArray 
    .OrderByDescending(patternsum => patternsum.sum) 
    .Select(patternsum => patternsum.pattern); 

var iq = patternsWithMaxLen.First(); 
+0

totalPatterns是什麼樣的?並用文字描述你想要的查詢。 – 2010-08-16 10:42:54

回答

2

測量評估與衡量。將所有內容都刪除到最簡單的查詢並進行測量。然後一次添加比特,直到找到'洞'。

+0

使用了一個螞蟻探查器...幫了很多 – Sam 2010-08-20 10:53:19