¿Por qué obtengo un tiempo de ejecución diferente cuando uso DataContext.ExecuteQuery con parámetros implícitos versus explícitos?

Tengo una tabla que contiene estadísticas de ensamblaje de prueba de compilaciones TFS de la siguiente manera:

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
...

Además, tengo una clase de resumen para contener un resultado DataContext.ExecuteQuery<>

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

Si ejecuto el siguiente código, mi consulta siempre toma el mismo tiempo, incluso si limito los resultados consultando solo una subrama:

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();

sin embargo, al usar el siguiente formato (no seguro para la web), el tiempo de ejecución disminuye como se esperaba

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();    

¿Me estoy perdiendo algo o es solo un problema con Linq2SQL que evalúa el LIKE después?

preguntado el 31 de julio de 12 a las 15:07

1 Respuestas

Parece que te faltan las comillas simples alrededor de {0} en la primera consulta.

Respondido 31 Jul 12, 15:07

El uso de comillas simples no devuelve ningún resultado. Los datos devueltos por ambas consultas son los mismos... - Markus

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.