Gewusst wie: Zurückgeben einer Abfrage aus einer Methode (C#-Programmierhandbuch)

Aktualisiert: November 2007

Dieses Beispiel zeigt, wie Sie eine Abfrage aus einer Methode im Rückgabewert und als out-Parameter zurückgeben.

Alle Abfragen müssen vom Typ IEnumerable oder IEnumerable<T> oder von einem abgeleiteten Typ wie IQueryable<T> sein. Daher müssen alle Rückgabewerte oder out-Parameter einer Methode, die eine Abfrage zurückgibt, ebenfalls diesen Typ haben. Wenn eine Methode eine Abfrage in einen konkreten List<T>- oder Array-Typ materialisiert, wird sie so betrachtet, als würde sie die Abfrageergebnisse zurückgeben, und nicht die Abfrage selbst. Eine von einer Methode zurückgegebene Abfragevariable kann immer noch zusammengesetzt oder geändert werden.

Ein Beispiel zum Ausführen einer Abfrage, die an eine Methode übergeben wird, finden Sie unter Beispiel zum Objektdumper.

Beispiel

Im folgenden Beispiel gibt die erste Methode eine Abfrage als Rückgabewert zurück, und die zweite Methode gibt eine Abfrage als out-Parameter zurück. Beachten Sie, dass in beiden Fällen keine Abfrageergebnisse zurückgegeben werden, sondern eine Abfrage.

class MQ
{
    IEnumerable<string> QueryMethod1(ref int[] ints)
    {
        var intsToStrings = from i in ints
                            where i > 4
                            select i.ToString();
        return intsToStrings;
    }

    static void Main()
    {
        MQ app = new MQ();

        int[] nums = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

        var myQuery = app.QueryMethod1(ref nums);


        //execute myQuery
        foreach (string s in myQuery)
        {
            Console.WriteLine(s);
        }

        //modify myQuery
        myQuery = (from str in myQuery
                   orderby str descending
                   select str).
                  Take(3);

        // Executing myQuery after more
        // composition
        Console.WriteLine("After modification:");
        foreach (string s in myQuery)
        {
            Console.WriteLine(s);
        }

        // Keep console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}

Kompilieren des Codes

  • Erstellen Sie ein Visual Studio-Projekt für .NET Framework, Version 3.5. Standardmäßig hat das Projekt einen Verweis auf System.Core.dll und eine using-Direktive für den System.Linq-Namespace.

  • Kopieren Sie den Code in Ihr Projekt.

  • Drücken Sie F5, um das Programm zu kompilieren und auszuführen.

  • Drücken Sie eine beliebige Taste, um das Konsolenfenster zu schließen.

Siehe auch

Konzepte

LINQ-Abfrageausdrücke (C#-Programmierhandbuch)