297 Stimmen

Suche nach dem Vorhandensein eines Wertes in einer Liste von Objekten mit Linq

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?

4voto

Ian Boyd Punkte 232380

Die Technik, die ich vor der Entdeckung der .Any() :

var hasJohn = (from customer in list
      where customer.FirstName == "John"
      select customer).FirstOrDefault() != null;

3voto

M4N Punkte 92235
List<Customer> list = ...;
Customer john = list.SingleOrDefault(customer => customer.Firstname == "John");

john ist null, wenn es keinen Kunden mit dem Vornamen "John" gibt.

2 Stimmen

Das löst eine Ausnahme aus, wenn mehr als eine Der Kunde heißt John.

1 Stimmen

Danke für den Kommentar. Ich werde die Antwort als teilweise korrektes Beispiel stehen lassen.

0 Stimmen

Es ist immer noch gültig in einem Szenario, wenn Sie sicher sind, es ist 1 und Sie wollen eine Ausnahme ausgelöst werden, wenn mehr als eine, so dass ich denke, es ist gut, dass Sie es nicht gelöscht haben.

3voto

Fabio Stratotti Punkte 47

Versuchen Sie dies, ich hoffe, es hilft Ihnen.

 if (lstCustumers.Any(cus => cus.Firstname == "John"))
 {
     //TODO CODE
 }

7 Stimmen

Das ist die gleiche Antwort, die vor über 8 Jahren akzeptiert wurde. Bitte stellen Sie sicher, dass Ihre Antwort einzigartig unter allen Antworten ist.

1voto

Krassi Punkte 2227

Eine andere Möglichkeit

if (list.Count(customer => customer.Firstname == "John") > 0) {
 //bla
}

4 Stimmen

In diesem Szenario ist die Verwendung von Any vorzuziehen.

CodeJaeger.com

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.

Powered by:

X