none
LINQ-Ausdruck mit Methodenaufruf? RRS feed

  • Frage

  • Hallo,
    ich verwende folgenden LINQ-Ausdruck:
    var result = from cust in customers
        select new {Name = cust.Name, City = cust.City, KundenFahrzeug = GetKundenFahrzeug(cust.Id)};

    private string GetKundenFahrzeug(int id)
    {
       ...
       return fahrzeug;
    }

    Kann man in einem LINQ-Ausdruck keine Methode verwenden?
    Die Methode GetKundenFahrzeug wird nicht aufgerufen und eine Fehlermeldung erscheint auch nicht.


    Alexander

    Montag, 17. Dezember 2012 12:34

Antworten

  • Hallo Alexander,

    Überprüfe bitte den Rückgabetype von result indem Du mit dem Mauszeiger über var drüberfährst. Es sollte IEnumerable<T> sein, wobei T ein anonymer Typ sein sollte. Was bedeutet das konkret? - Deine Abfrage gibt zunächst keine Ergebnisse zurück. Sie ist  - wie man so schön sagt - lazy-evaluiert, d.h. sie produziert erst beim späteren Iterieren richtige Ergebnisse. Also: Schreibe darunter eine foreach(var element in result) { Console.WriteLine(element.KundenFahrzeug) } und alles ist gut. Vielleicht benennst Du noch die Variable result um, denn es handelt sich hier nicht wirklich um Ergebnisse, sondern nur um einen Abfrageausdruck (expression). Eine weitere Möglichkeit wäre die, dass Du result.ToList() auswertest.

    LINQ-Abfrageausdrücke (C#-Programmierhandbuch)

    Gruß
    Marcel



    Montag, 17. Dezember 2012 12:55
    Moderator