Wählen Sie Anzahl (Id) in linq

8

Gibt es eine Möglichkeit, eine linq-Abfrage zu schreiben, die zu folgendem Ergebnis führt:

%Vor%

weil

%Vor%

übersetzt nicht zu dem Ergebnis, das ich möchte

Aktualisierung:

gibt zurück:

%Vor%

Aktualisierung nach Antwort:

Ich habe das Szenario mit mehr als 21.000.000 getestet

    
unos baghaii 18.11.2015, 13:37
quelle

4 Antworten

3
  

Gibt es eine Möglichkeit, eine linq-Abfrage zu schreiben, die zu einem Ergebnis führt?

Nein. Als Erstes müssen Sie angeben, was Sie benötigen. Als Beispiel können Sie in T-SQL Folgendes verwenden:

  • COUNT(*) zählt die Zeilen in Ihrer Tabelle
  • COUNT(column) zählt die Einträge in einer Spalte und ignoriert Nullwerte.

Wenn Sie zählen müssen, wie viele Zeilen Sie haben, verwenden Sie einfach

%Vor%

Wenn Sie sehen möchten, wie viele Entitäten Sie haben, wenn eine bestimmte Spalte nicht null ist, verwenden Sie eine Filterüberladung von Count method.

%Vor%

Nein, das ist nicht möglich. Es gibt keinen Unterschied zwischen Performance und Count(*) oder'Count (Id) , even more if your Id 'ist der Primärschlüssel.

Ich habe hier ein Experiment mit einer Tabelle mit mehr als einer Million Tupel gemacht. Siehe den Ausführungsplan beider Abfragen. Der erste ist der select count(*) und der zweite ist select count(id) . Der id ist der Primärschlüssel (die Ergebnisse sind leider in Portugiesisch-Brasilien):

    
Felipe Oriani 18.11.2015, 13:46
quelle
5

Die Verwendung von count(field) in sql zählt alle Nicht-Null-Werte. In linq können Sie sagen:

%Vor%

oder einfach:

%Vor%     
Kvam 18.11.2015 13:44
quelle
1

Um die gleiche Funktion wie SQL Count(Id) auszuführen, können Sie LINQ GroupBy verwenden und anschließend jede Gruppe auswerten. Hier ist ein kurzer, vollständiger Ausschnitt:

%Vor%

Was wird ausgegeben:

%Vor%     
Thomas Ayoub 18.11.2015 15:09
quelle
0

Eine Möglichkeit,

zu bekommen
  

Wählen Sie Anzahl (Id) von tbl1

wäre

%Vor%

Das obige Where soll null -Werte vermeiden. Wenn sie auch gezählt werden sollen, muss Where eliminiert und Select angepasst werden, um null -Einträge zu berücksichtigen.

Zusätzlich, wenn Sie nicht nur bestimmte Werte zählen möchten, können die Teile Select und Distinct ignoriert werden.

    
Thomas 18.11.2015 13:53
quelle

Tags und Links