Procedura: restituire sottoinsiemi di proprietà degli elementi in una query (Guida per programmatori C#)
Aggiornamento: novembre 2007
Utilizzare un tipo anonimo in un'espressione di query quando si verificano entrambe le condizioni seguenti:
Si desidera restituire solo alcune delle proprietà di ogni elemento di origine.
Non è necessario archiviare la query all'esterno dell'ambito del metodo in cui è stata eseguita la query.
Se si desidera restituire solo una proprietà o un campo da ogni elemento di origine, è sufficiente utilizzare l'operatore punto nella clausola select. Per restituire, ad esempio, solo l'ID di ogni student, scrivere la clausola select come segue:
select student.ID;
Esempio
Nell'esempio seguente viene illustrato come utilizzare un tipo anonimo per restituire solo un sottoinsieme delle proprietà di ogni elemento di origine che corrisponde alla condizione specificata.
private static void QueryByScore()
{
// Create the query. var is required because
// the query produces a sequence of anonymous types.
var queryHighScores =
from student in students
where student.ExamScores[0] > 95
select new { student.FirstName, student.LastName };
// Execute the query.
foreach (var obj in queryHighScores)
{
// The anonymous type's properties were not named. Therefore
// they have the same names as the Student properties.
Console.WriteLine(obj.FirstName + ", " + obj.LastName);
}
}
/* Output:
Adams, Terry
Fakhouri, Fadi
Garcia, Cesar
Omelchenko, Svetlana
Zabokritski, Eugene
*/
Si noti che il tipo anonimo utilizza i nomi dell'elemento di origine per le proprietà se non è specificato alcun nome. Per assegnare nomi nuovi alle proprietà nel tipo anonimo, scrivere l'istruzione select come segue:
select new { First = student.FirstName, Last = student.LastName };
Se si tenta questa operazione nell'esempio precedente, è necessario modificare anche l'istruzione Console.WriteLine:
Console.WriteLine(student.First + " " + student.Last);
Compilazione del codice
- Per eseguire questo codice, copiare e incollare la classe in un progetto di applicazione console di Visual C# creato in Visual Studio. Per impostazione predefinita, questo progetto è destinato alla versione 3.5 di .NET Framework e conterrà un riferimento a System.Core.dll e una direttiva using per System.Linq. Se uno o più di questi requisiti non sono presenti nel progetto, è possibile aggiungerli manualmente. Per ulteriori informazioni, vedere Procedura: creare un progetto LINQ.
Vedere anche
Concetti
Espressioni query LINQ (Guida per programmatori C#)