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.