Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Use um tipo anónimo numa expressão de consulta quando ambas as condições se aplicam:
Queres devolver apenas algumas das propriedades de cada elemento de origem.
Não é necessário armazenar os resultados da consulta fora do âmbito do método em que a consulta é executada.
Se só quiseres devolver uma propriedade ou campo de cada elemento de origem, podes simplesmente usar o operador ponto na select cláusula. Por exemplo, para devolver apenas o ID de cada student, escreva a cláusula select da seguinte forma:
select student.ID;
Exemplo
O exemplo seguinte mostra como usar um tipo anónimo para devolver 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
*/
Note que o tipo anónimo usa os nomes do elemento fonte para as suas propriedades caso não sejam especificados nomes. Para dar novos nomes às propriedades no tipo anónimo, escreva a select instrução da seguinte forma:
select new { First = student.FirstName, Last = student.LastName };
Se tentar isto no exemplo anterior, então a Console.WriteLine afirmação também deve mudar:
Console.WriteLine(student.First + " " + student.Last);
Compilando o código
Para executar este código, copie e cole a classe numa aplicação de consola C# com uma using diretiva para o System.Linq.