none
LINQ-Ausdruck gesucht RRS feed

  • Frage

  • Hallo,
    ich habe eine IEnumerable-Collection Users. In dieser will ich einen User nach dem Namen (userName) suchen.
    Der Name existiert nicht mehrmals. Zurückgegeben werden soll ein einzelnes Objekt vom Typ User. Der folgende Ausdruck funktioniert nicht.

    User user = Users.Where(item => item.Name == userName).Select(user => user);


    Alexander

    Montag, 26. August 2013 13:34

Antworten

  • Hallo,

    LINQ-Ausdrücke liefern dir in der Regel immer eine neue Auflistung zurück. Darum gibt es auch die First- bzw. FirstOrDefault- (und Last-, LastOrDefault)-Methoden.
    Wenn du die LINQ-Methoden verwendest, dann muss man nicht zwingend die Select-Methode aufrufen. Diese verändert in deinem Code nämlich garnichts. Darum lasse ich diese hier auch weg.

    User user = (User)Users.Where(item => item.Name == userName).FirstOrDefault();

    Die OrDefault-Methoden geben dir null (für Value-Typen den Standartwert) zurück, falls doch mal kein Element in der Auflistung sein sollte. Sonst bekommst du immer das erste/letzte Element.


    <Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.


    Montag, 26. August 2013 13:45
    Moderator