Condividi tramite


Come restituire subset di proprietà degli elementi in una query (Guida per programmatori C#)

Usare un tipo anonimo in un'espressione di query quando si applicano entrambe le condizioni seguenti:

  • Si desidera restituire solo alcune delle proprietà di ogni elemento di origine.

  • Non è necessario archiviare i risultati della query all'esterno dell'ambito del metodo in cui viene eseguita la query.

Se si vuole restituire solo una proprietà o un campo da ogni elemento di origine, è sufficiente usare l'operatore dot nella select clausola . Ad esempio, per restituire solo il 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 subset 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 relative proprietà se non vengono specificati nomi. Per assegnare nuovi nomi alle proprietà nel tipo anonimo, scrivere l'istruzione select come segue:

select new { First = student.FirstName, Last = student.LastName };  

Se si tenta di eseguire questa operazione nell'esempio precedente, l'istruzione Console.WriteLine deve anche cambiare:

Console.WriteLine(student.First + " " + student.Last);  

Compilazione del codice

Per eseguire questo codice, copiare e incollare la classe in un'applicazione console C# con una using direttiva per System.Linq.

Vedere anche