Linq如何只查表中的部分字段给实体呢?
如实体定义如下
public class Movie
{
public int ID { get; set; }
public string Title { get; set; }
public DateTime ReleaseDate { get; set; }
public string Genre { get; set; }
public decimal Price { get; set; }
public string Rating { get; set; }
}
表结构有ID,Title,ReleaseDate,Genre,Price和Rating这几个字段
考虑性能(有可能某个字段数据特别大,我不想查出来),我现在想只查ID、Title和Price这三个字段
var movies = from m in db.Movies
where m.ReleaseDate > new DateTime(1984, 6, 1)
select new {ID=m.ID, Title=m.Title, Price=m.Price};
List<Movie> movie=movies.ToList(); //这句报错,如何解决?
[解决办法]
select new {ID=m.ID, Title=m.Title, Price=m.Price}这个出来后是匿名类型
改成这样
select new Movie{ID=m.ID,……其它字段}
[解决办法]
var movies = from m in db.Movies
where m.ReleaseDate > new DateTime(1984, 6, 1)
select new Movie{ID=m.ID, Title=m.Title, Price=m.Price};
这点用到了C#的对象初始化器
[解决办法]
你可以先 匿名出来ToList,再 select 转换,就跟LINQ to Entities 就没关系了 。
var movies = from m in db.Movies where m.ReleaseDate > new DateTime(1984, 6, 1) select new {ID=m.ID, Title=m.Title, Price=m.Price};List<Movie> movie=movies.ToList() .Select(m=>new Movie{ID=m.ID, Title=m.Title,Price=m.Price}).ToList();
[解决办法]
不想查出来的字段直接给设置为空不就完了么。
var movies = from m in db.Movies where m.ReleaseDate > new DateTime(1984, 6, 1) select new Movie(){ID=m.ID, Title=m.Title, Price=m.Price,ReleaseDate=null,Genre="",Rating=""};
[解决办法]
坐等答案