Cómo: Devolver subconjuntos de propiedades de elementos en una consulta (Guía de programación de C#)

Actualización: noviembre 2007

Utilice un tipo anónimo en una expresión de consulta cuando se cumplan las dos condiciones siguientes:

  • Sólo desea devolver algunas propiedades de cada elemento de origen.

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

Si sólo desea devolver una propiedad o campo de cada elemento de origen, puede utilizar simplemente el operador de punto en la cláusula select. Por ejemplo, para devolver solamente el elemento ID de cada student, escriba la cláusula select de la siguiente forma:

select student.ID;

Ejemplo

En el ejemplo siguiente se muestra cómo utilizar un tipo anónimo para devolver solamente 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 el tipo anónimo utiliza los nombres del elemento de origen para sus propiedades si no se especifican nombres. Para asignar nombres nuevos a las propiedades del tipo anónimo, escriba la instrucción select de la siguiente forma:

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

Si intenta realizar esta operación 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 un proyecto de aplicación de consola de Visual C# creado en Visual Studio. De manera predeterminada, el proyecto tiene como destino la versión 3.5 de .NET Framework y contendrá una referencia a System.Core.dll y una directiva using para System.Linq. Si el proyecto no cumple uno o varios de estos requisitos, puede agregar lo que falte manualmente. Para obtener más información, consulte Cómo: Crear un proyecto con LINQ.

Vea también

Conceptos

Guía de programación de C#

Expresiones de consultas con LINQ (Guía de programación de C#)

Referencia

Tipos anónimos (Guía de programación de C#)