Domanda

In ADO.Net/SQLClient mi capitava spesso fare qualcosa di simile:

SELECT COUNT(*) FROM SomeTable WHERE SomeKey = 1234

... e il fuoco utilizzando ExecuteScalar per restituire il valore di conteggio -. Per un controllo semplice, se qualcosa esiste

Come avrei fatto lo stesso con LinqToSql?

È stato utile?

Soluzione

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

Si potrebbe anche usare Count().

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

Ma questo richiede sempre di passare attraverso tutte le righe, mentre Any() può ritornare dopo la prima riga corrispondente -. Così Any() potrebbe avere prestazioni migliori

Altri suggerimenti

Ricordate, LINQ to SQL è esecuzione differita, il che significa, la query solo in realtà viene eseguito quando si accede alla raccolta. Pertanto:

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

si trasformerà in un conte SELECT () sul lato SQL delle cose.

Se stai cercando di vedere se qualcosa esiste è possibile utilizzare la funzione di qualsiasi:

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

o se si vuole realmente sapere che conta è possibile utilizzare la funzione di dove e la funzione di conteggio:

context.SomeTable.Where(i=> i.SomeKey == 1234).Count();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top