Partilhar via


Como retornar subconjuntos de propriedades de elementos em uma consulta (Guia de Programação em C#)

Use um tipo anônimo em uma expressão de consulta quando ambas as condições se aplicarem:

  • Você deseja retornar apenas algumas das propriedades de cada elemento de origem.

  • Não é necessário armazenar os resultados da consulta fora do escopo do método no qual a consulta é executada.

Se você quiser retornar apenas uma propriedade ou campo de cada elemento de origem, basta usar o operador de ponto na select cláusula. Por exemplo, para retornar apenas o ID de cada student, escreva a select cláusula da seguinte maneira:

select student.ID;  

Exemplo

O exemplo a seguir mostra como usar um tipo anônimo para retornar apenas um subconjunto das propriedades de cada elemento de origem que corresponde à condição especificada.

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
*/

Observe que o tipo anônimo usa os nomes do elemento source para suas propriedades se nenhum nome for especificado. Para dar novos nomes às propriedades no tipo anônimo, escreva a select instrução da seguinte maneira:

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

Se você tentar isso no exemplo anterior, a Console.WriteLine instrução também deve mudar:

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

Compilando o código

Para executar esse código, copie e cole a classe em um aplicativo de console C# com uma using diretiva para System.Linq.

Consulte também