Share via


Procedimiento para devolver subconjuntos de propiedades de elementos en una consulta (Guía de programación de C#)

Use un tipo anónimo en una expresión de consulta cuando se cumplan estas dos condiciones:

  • Solo quiere algunas de las propiedades de cada elemento de origen.

  • No es necesario almacenar los resultados de la consulta fuera del ámbito del método en el que se ejecuta la consulta.

Si solo quiere devolver una propiedad o campo de cada elemento de origen, puede usar simplemente el operador de punto en la cláusula select. Por ejemplo, para devolver solo el ID de cada student, escriba la cláusula select como sigue:

select student.ID;  

Ejemplo

En el ejemplo siguiente se muestra cómo usar un tipo anónimo para devolver solo un subconjunto de las propiedades de cada elemento de origen que coincida con la condición 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
*/

Tenga en cuenta que, si no se especifica ningún nombre, el tipo anónimo usa los nombres del elemento de origen para sus propiedades. Para asignar nombres nuevos a las propiedades del tipo anónimo, escriba la instrucción select como sigue:

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

Si lo intenta en el ejemplo anterior, también debe cambiar la instrucción Console.WriteLine:

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

Compilar el código

Para ejecutar este código, copie y pegue la clase en una aplicación de consola de C# con una directiva using de System.Linq.

Consulte también