var list =
from a in TableA
select new B {
Count = a.TotalCount,
Title = a.Title
};
Usted nuevo una instancia de B en su cláusula select, y asignar las propiedades utilizando la función de asignación de propiedad en línea en C# 3.0.
Las ventajas de mapeo en línea se trata de ejecución diferida de su declaración de LINQ. Linq mapeará la declaración modificada y la ejecutará desde su IQueryable. Por ejemplo:
public class ClassA
{
public int TotalCount;
public string Title;
}
public class ClassB
{
public int Count;
public string Title;
}
public IQueryable<ClassB> FetchAllOfClassB()
{
var list =
from a in TableOfClassA
select new ClassB {
Count = a.TotalCount,
Title = a.Title
};
return list.AsQueryable();
}
Técnicamente, el AsQueryable()
es un poco redundante. A veces lo uso para que sea un punto, otros dicen que es absolutamente necesario. No obstante, el objeto de la lista en sí es IQueryable de ClassB.
A continuación, puede llamar FetchAllOfClassB()
más arriba en la cadena, y utilizar IQuerable. Es bastante elegante y eficiente.
Su pregunta no es clara ... ¿cuál es la relación entre A y B? –
Básicamente representan lo mismo. En mi caso real, A es una clase generada por Linq a Sql cuando creé una clase de Linq a Sql y le agregué una tabla. Debido a que la clase A tiene linmanencias y dependencias de Linq a Sql, no quiero exponerlo a mis aplicaciones, entonces creo la clase B, que no tiene dependencias. Por lo tanto, necesito completar una lista de instancias de clase B a partir de una lista de instancias de clase A. – Jeremy