Linq Enthält eine Methode für ein Objekt

7

Ich habe ein Objekt User und es ist die folgende Klasse:

%Vor%

Und ich habe ein IEnumerable<User>

Ich möchte herausfinden, ob ein bestimmter Benutzer in IEnumerable<User> existiert, und den Benutzer mit seiner ID vergleichen.

Ein Beispiel:

%Vor%

Wie kann ich es tun? Und was ist der schnellste Weg, diesen Booleschen Wert zu erhalten, ist Contains?

    
BrunoLM 20.07.2010, 19:30
quelle

4 Antworten

12

Sie müssen eine User , nicht eine int überprüfen. Enumerable.Any funktioniert dafür gut:

%Vor%     
Reed Copsey 20.07.2010, 19:32
quelle
5
%Vor%     
Brian Genisio 20.07.2010 19:32
quelle
4

Wenn Sie den Lambda-Ausdruck vermeiden möchten und denken, dass Sie möglicherweise User Objekte anhand der ID in anderen Teilen Ihres Codes vergleichen müssen, sollten Sie einen Vergleicher wie folgt schreiben.

%Vor%

Dann sieht Ihre Listenabfrage wie folgt aus.

%Vor%

Um Ihre Frage bezüglich der Abrufgeschwindigkeit zu beantworten, ist Contains der schnellste Weg, wenn Sie nicht wissen, wie die User Objekte in Ihrer Sammlung angeordnet sind. Wenn sie nach ID sortiert und in einem Objekt List<User> gespeichert würden, könnten Sie die Methode List<User>.BinarySearch() mit einer entsprechenden Implementierung von IComparer<User> verwenden.

    
Steve Guidi 20.07.2010 19:41
quelle
0
  1. var check = list.Where(lu => lu.ID == users[0].ID) und dann auf check.Count() == 1 testen
  2. var check = list.FirstOrDefault(lu => lu.ID == users[0].ID) und dann test auf check != null .
  3. list.Any(user => user.ID == users[1].ID);
Femaref 20.07.2010 19:34
quelle

Tags und Links