Angenommen, ich habe eine Klasse Customer
die eine Eigenschaft hat FirstName
. Dann habe ich eine List<Customer>
.
Kann LINQ verwendet werden, um festzustellen, ob die Liste einen Kunden mit Firstname = 'John'
in einer einzigen Aussage wie?
Angenommen, ich habe eine Klasse Customer
die eine Eigenschaft hat FirstName
. Dann habe ich eine List<Customer>
.
Kann LINQ verwendet werden, um festzustellen, ob die Liste einen Kunden mit Firstname = 'John'
in einer einzigen Aussage wie?
Any ist gut. Ich frage mich, wie viele Entwickler Count verwenden, wenn sie Any verwenden sollten?
Sie können auch eine Suche ohne Berücksichtigung der Groß-/Kleinschreibung durchführen: cus => cus.FirstName.Equals("John", StringComparison.CurrentCultureIgnoreCase)
Ich weiß, dass dies eine alte Frage ist, aber warum verwenden wir nicht die Methode "Exists"? Sie ist doch dazu da, um zu sehen, ob Dinge existieren.
Die Antwort von zvolkov ist die richtige, um das herauszufinden wenn es einen solchen Kunden gibt. Wenn Sie brauchen verwenden. der Kunde danach, können Sie tun:
Customer customer = list.FirstOrDefault(cus => cus.FirstName == "John");
if (customer != null)
{
// Use customer
}
Ich weiß, das ist nicht die Frage, die Sie gestellt haben, aber ich dachte, ich komme einer Folgefrage zuvor :) (Natürlich findet dies nur die erste solche Kunden... um sie alle zu finden, verwenden Sie einfach eine normale where
Klausel).
Ich möchte darauf hinweisen, dass Sie dies später bei der Fehlersuche zu schätzen wissen, wenn Sie sich plötzlich fragen, welcher Kunde die Kriterien erfüllt hat.
Ich habe diese Antwort nur einen Schritt nach oben verschoben, weil ich es toll finde, wie die SO-Gemeinschaft einen zusätzlichen Schritt macht, um der Frage/Antwort noch mehr hinzuzufügen.
Danke, es hat mir geholfen, aber manchmal möchte ich einfach nur bool
Ergebnis, so dass in diesem Fall .Any
o .FindIndex
verwendet wird ici die schnell ist ?
Eine Option für die Folgefrage (wie findet man einen Kunden, der eine beliebige Anzahl von Vornamen haben könnte):
List<string> names = new List<string>{ "John", "Max", "Pete" };
bool has = customers.Any(cus => names.Contains(cus.FirstName));
oder um den Kunden aus einer csv-Datei mit einer ähnlichen Liste abzurufen
string input = "John,Max,Pete";
List<string> names = input.Split(',').ToList();
customer = customers.FirstOrDefault(cus => names.Contains(cus.FirstName));
Dies beantwortet nicht die Frage, "ob" ein solcher Eintrag existiert; es zählt lediglich die Werte auf, falls sie existieren. Ein zusätzlicher Schritt ist erforderlich, um festzustellen, ob diese Aufzählung nicht leer ist.
Ändern Sie dann Where in Any. Wahrscheinlich ist das für mich eher philosophisch. Ich muss selten wissen, ob, ohne mich darum zu kümmern, welche es sind. @jmservera: Du hattest Recht. Ich habe LINQ vor einer Weile aufgegeben und verwende jetzt ausschließlich Lambda.
Ich will nicht pedantisch sein, wenn ich sage, dass die Verwendung der Lambda-Aufrufe technisch gesehen immer noch LINQ ist. (Insbesondere verwenden Sie LINQ-to-Objects.) Sie verwenden nur die Methodenaufrufe und nicht die Sprachschlüsselwörter.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.