1

次のように、TFS ビルドのテスト アセンブリ統計を含むテーブルがあります。

AssemblyName   Duration      TestResults    MsPerResult Branch
Ass1.dll            100                2             50     $/branch1
Ass2.dll            200                2            100     $/branch1/sub1
Ass3.dll            400                2            200     $/branch1/sub1/subsub1
...

さらに、DataContext.ExecuteQuery<> の結果を保持するための要約クラスがあります。

public class AssemblyStatistics
{
    public string AssemblyName { get; set; }
    public int TestResultCount { get; set; }
    public long ValueInMs { get; set; }
}

次のコードを実行すると、サブブランチのみをクエリする結果を制限しても、クエリには常に同じ時間がかかります。

context.ExecuteQuery<AssemblyStatistics>(
  "SELECT TOP 10 AssemblyName, SUM(Duration) AS ValueInMs, SUM(TestResults) AS TestResultCount FROM AssembliesByDuration WHERE Branch LIKE {0} GROUP BY AssemblyName ORDER BY SUM(Duration) DESC", "$/branch1/sub1%").ToList();

ただし、次の (Web セーフではない) 形式を使用すると、ランタイムは予想どおりにダウンします

context.ExecuteQuery<AssemblyStatistics>(
  @"SELECT TOP 10 AssemblyName, SUM(Duration) AS ValueInMs, SUM(TestResults) AS TestResultCount FROM AssembliesByDuration WHERE Branch LIKE '"
                  + "$/branch1/sub1%" + "' GROUP BY AssemblyName ORDER BY SUM(Duration) DESC").ToList();    

何か不足していますか、それとも後で LIKE を評価する Linq2SQL の問題ですか?

4

1 に答える 1

0

最初のクエリで {0} を一重引用符で囲んでいないようです。

于 2012-07-31T14:19:18.850 に答える