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 essas duas condições se aplicarem:
Você deseja retornar apenas algumas das propriedades de cada elemento de origem.
Você não precisa armazenar os resultados da consulta fora do escopo do método em que a consulta é executada.
Se você deseja retornar apenas uma propriedade ou campo de cada elemento de origem, use somente o operador de ponto na cláusula select
. Por exemplo, para retornar somente a ID
de cada student
, escreva a cláusula select
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 corresponda à 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 nomes do elemento de origem para suas propriedades, se nenhum nome for especificado. Para fornecer novos nomes para as propriedades no tipo anônimo, escreva a instrução select
da seguinte maneira:
select new { First = student.FirstName, Last = student.LastName };
Se você tentar fazer isso no exemplo anterior, a instrução Console.WriteLine
também deve ser alterada:
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 em C# com uma diretiva using
para System.Linq.