Jak v dotazu vrátit podmnožinu vlastností elementu (Průvodce programováním v C#)
Pokud platí obě tyto podmínky, použijte anonymní typ ve výrazu dotazu:
Chcete vrátit pouze některé vlastnosti každého zdrojového prvku.
Výsledky dotazu nemusíte ukládat mimo rozsah metody, ve které se dotaz spouští.
Pokud chcete vrátit pouze jednu vlastnost nebo pole z každého zdrojového prvku, stačí použít tečkový operátor v klauzuli select
. Pokud například chcete vrátit pouze ID
každou z nich student
, napište klauzuli select
následujícím způsobem:
select student.ID;
Příklad
Následující příklad ukazuje, jak použít anonymní typ k vrácení pouze podmnožinu vlastností každého zdrojového prvku, který odpovídá zadané podmínce.
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
*/
Všimněte si, že anonymní typ používá názvy zdrojových elementů pro jeho vlastnosti, pokud nejsou zadány žádné názvy. Chcete-li dát novým názvům vlastnosti v anonymním typu, napište select
příkaz následujícím způsobem:
select new { First = student.FirstName, Last = student.LastName };
Pokud to zkusíte v předchozím příkladu, Console.WriteLine
příkaz se musí také změnit:
Console.WriteLine(student.First + " " + student.Last);
Probíhá kompilace kódu
Chcete-li spustit tento kód, zkopírujte a vložte třídu do konzolové aplikace jazyka C# s direktivou using
pro System.Linq.