Frage

In ADO.Net/SQLClient würde ich oft etwas tun, wie folgt aus:

SELECT COUNT(*) FROM SomeTable WHERE SomeKey = 1234

... und Feuer es ExecuteScalar über den Wert der Zählung zurück -. Für eine einfache Überprüfung, ob etwas existiert

Wie würde ich das gleiche mit LinqToSql tun?

War es hilfreich?

Lösung

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

Sie können auch Count() verwenden.

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

Dies erfordert jedoch immer durch alle Reihen zu gehen, während Any() nach der ersten Trefferzeile zurückkehren können -. So Any() könnte eine bessere Leistung haben

Andere Tipps

Denken Sie daran, Linq to Sql verzögerte Ausführung ist, was bedeutet, nur die Abfrage tatsächlich ausgeführt wird, wenn Sie die Sammlung zugreifen. Deshalb:

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

wird in eine SELECT Count () auf der SQL-Seite der Dinge.

Wenn Sie schauen, um zu sehen, ob etwas existiert können Sie die jede Funktion verwenden:

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

oder wenn Sie wollen wirklich, dass die Zählung wissen, die wo-Funktion und die Count-Funktion verwenden können:

context.SomeTable.Where(i=> i.SomeKey == 1234).Count();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top