visual uso sintaxis programación operaciones net framework ejemplos consultas consulta con basicas asp anidadas asp.net linq-to-sql

asp.net - uso - LINQ to SQL-Cómo seleccionar columnas específicas y devolver la lista fuertemente tipada



sintaxis linq c# (2)

Básicamente lo estás haciendo de la manera correcta. Sin embargo, debe usar una instancia de DataContext para consultar (no es obvio que DataContext es una instancia o el nombre de tipo de su consulta):

var result = (from a in new DataContext().Persons where a.Age > 18 select new Person { Name = a.Name, Age = a.Age }).ToList();

Aparentemente, la clase Person es tu clase de entidad generada de LINQ a SQL. Debes crear tu propia clase si solo quieres algunas de las columnas:

class PersonInformation { public string Name {get;set;} public int Age {get;set;} } var result = (from a in new DataContext().Persons where a.Age > 18 select new PersonInformation { Name = a.Name, Age = a.Age }).ToList();

Puede cambiar libremente var con List<PersonInformation> aquí sin afectar nada (ya que esto es lo que hace el compilador ).

De lo contrario, si está trabajando localmente con la consulta, le sugiero que considere un tipo anónimo:

var result = (from a in new DataContext().Persons where a.Age > 18 select new { a.Name, a.Age }).ToList();

Tenga en cuenta que en todos estos casos , el result está tipado estáticamente (su tipo es conocido en tiempo de compilación). El último tipo es una List de una clase anónima generada por el compilador similar a la clase PersonInformation que escribí arriba. A partir de C # 3.0, no hay tipeo dinámico en el idioma.

ACTUALIZAR:

Si realmente desea devolver una List<Person> (que podría o no ser lo mejor que puede hacer), puede hacer esto:

var result = from a in new DataContext().Persons where a.Age > 18 select new { a.Name, a.Age }; List<Person> list = result.AsEnumerable() .Select(o => new Person { Name = o.Name, Age = o.Age }).ToList();

También puede fusionar las declaraciones anteriores, pero las separé para mayor claridad.

Estoy tratando de usar LINQ to SQL para seleccionar algunas columnas específicas de una tabla y devolver el resultado como una lista de objetos fuertemente tipada.

Por ejemplo:

var result = (from a in DataContext.Persons where a.Age > 18 select new Person { Name = a.Name, Age = a.Age } ).ToList();

Cualquier ayuda sería muy apreciada.

Construye bien, pero cuando lo ejecuto, obtengo el error. La construcción explícita del tipo de entidad MyEntity en la consulta no está permitida.


El problema era, de hecho, que una de las propiedades era una relación con otra mesa. Cambié mi consulta LINQ para que pudiera obtener los mismos datos de un método diferente sin necesidad de cargar toda la tabla.

¡Gracias por toda tu ayuda!