Sdílet prostřednictvím


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.

Viz také