Pregunta

En ADO.Net/SQLClient menudo me gustaría hacer algo como esto:

SELECT COUNT(*) FROM SomeTable WHERE SomeKey = 1234

... y el fuego usando ExecuteScalar para devolver el valor de recuento -. Para una sencilla comprobación si algo existe

¿Cómo voy a hacer lo mismo usando LinqToSql?

¿Fue útil?

Solución

if (context.SomeTable.Any(row => row.SomeKey == 1234))
{
    DoStuff();
}

También es posible usar Count().

if (context.SomeTable.Count(row => row.SomeKey == 1234) > 0)
{
    DoStuff();
}

Pero esto requiere siempre que pasar por todas las filas, mientras que Any() puede regresar después de la primera fila coincidente -. Any() así podría tener un mejor rendimiento

Otros consejos

Recuerde, LINQ to SQL es ejecución diferida, es decir, la consulta sólo ejecuta realmente cuando acceda a la colección. Por lo tanto:

var q = (from p in db.SomeTable
        where p.SomeKey == 1234
        select p).Count();

se convertirá en un SELECT Count () en el lado de SQL de las cosas.

Si usted está mirando para ver si existe algo que se puede utilizar el cualquier función:

if (context.SomeTable.Any(i => i.SomeKey == 1234))
{
    return true;
}

o si realmente quiere saber que la cuenta puede utilizar la función de dónde y la función de cuenta:

context.SomeTable.Where(i=> i.SomeKey == 1234).Count();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top