lambda äquivalent zur Sammlung.Count(Prädikat)
Was wäre ein lambda-Ausdruck äquivalent zum folgenden code
int[] numbers = { 3, 4, 5, 6, 7, 8 };
int count = numbers.Count(x => x > 5 == true);
Ich habe versucht diese, hat es aber nicht kompilieren:
var c = from number in numbers where number > 5 select numbers.Count;
dieser sich nicht kompilieren, entweder:
var c = from number in numbers where number > 5 select new {numbers.Count};
numbers.Count(x => x > 5)
? Sowieso, es gibt kein äquivalent zu Count
im Abfrage-syntax. Sie haben, um wickeln Sie Ihre Abfrage in Klammern, und rufen Sie dann Count
mit oder ohne Prädikat.Es scheint, Sie können Ihre Semantik ein bisschen ab. Sie haben bereits den lambda-Ausdruck - der lambda-operator
=>
, so dass alle Ausdrücke mit diesem operator wird ein lambda-Ausdruck. Was Sie für Fragen hier ist, konvertieren Sie Ihre lambda-Ausdruck in einen äquivalenten Ausdruck, der verwendet, ähnlich SQL-syntax-Operatoren.Ich sehe - ich kann die Terminologie aus ... ist es ein kurzer name, der für "SQL-like-syntax-Operatoren"? Danke.
syntax" zu sein scheint, die am häufigsten verwendet (siehe Ilya ' s Kommentar oben ist von mir).
Danke @Gjeltema. Würde upvote Ihren Kommentar, sobald ich mehr Ruf.
InformationsquelleAutor Mitten | 2013-05-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie in der Nähe sind, benötigen Sie einfach zu wickeln den LINQ-Ausdruck in der Klammer wie diese:
select number
, obwohl das, was Sie haben, wird kompiliert und für das richtige Ergebnis.BTW, warum macht beides .. wählen Sie die Anzahl).Count() und .. wählen Sie zahlen.Count() würde zum gleichen Ergebnis führen (3) ? Ich hätte gedacht, dass eine Sammlung (zahlen) müssen so gewählt werden, dass es könnte abgefragt werden, die für eine Größe, als eine einzige Zahl, nicht ein size-Eigenschaft.
Es funktioniert, weil Sie sich nicht tatsächlich mit dem gewählten Wert, nur das zählen der Anzahl der Ergebnisse. Könnten Sie etwas Platz, der
numbers
und es hätte das gleiche Ergebnis, z.B.(from number in numbers where number > 5 select 1).Count();
Danke @hvd. Korrigiert habe ich den Beispiel-code.
InformationsquelleAutor ajawad987
LINQ-Stil mit
from
undin
wird als "query syntax":Er enthält in der Regel weniger lambda-Ausdrücke als "Methode syntax":
Können Sie mischen Sie bis zu. Zum Beispiel, das schafft eine einzige Gruppe für alle Zeilen, und berechnet die Zeilenanzahl. Ein Methodenaufruf wie
FirstOrDefault()
ist erforderlich, um zu materialisieren Wert:InformationsquelleAutor Andomar
Was du redest, ist die Abfrage-syntax, und nicht alle LINQ-Methoden haben eine Entsprechung in der syntax. Der konzentrierteste Ausdruck ist
numbers.Count(x => x > 5)
. Aus der docs:InformationsquelleAutor Mike Zboray
InformationsquelleAutor Terry H