Procedura: ottenere una query da un metodo (Guida per programmatori C#)
Aggiornamento: novembre 2007
In questo esempio viene illustrato come restituire una query da un metodo nel valore restituito e come parametro out.
Una query deve contenere un tipo di IEnumerable o IEnumerable<T> o un tipo derivato quale IQueryable<T>. Pertanto qualsiasi valore restituito o parametro out di un metodo che restituisce una query deve contenere anche quel tipo. Se un metodo materializza una query in un tipo List<T> o Array concreto, verranno restituiti i risultati della query anziché la query stessa. Una variabile di query restituita da un metodo può ancora essere composta o modificata.
Per un esempio di come eseguire una query passata a un metodo, vedere Esempio Object Dumper.
Esempio
Nell'esempio seguente il primo metodo restituisce una query come valore restituito mentre il secondo metodo restituisce una query come parametro out. In entrambi casi, viene restituita una query e non i risultati della query.
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();
}
}
Compilazione del codice
Creare un progetto di Visual Studio destinato a .NET Framework versione 3.5. Per impostazione predefinita, il progetto contiene un riferimento a System.Core.dll e una direttiva using per lo spazio dei nomi System.Linq.
Copiare il codice nel progetto.
Premere F5 per compilare ed eseguire il programma.
Premere un tasto per chiudere la finestra della console.