首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Linq怎么只查表中的部分字段给实体呢

2012-01-07 
Linq如何只查表中的部分字段给实体呢?如实体定义如下public class Movie{public int ID { get set }publ

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}这个出来后是匿名类型
改成这样

C# code
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 就没关系了 。
C# code
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();
[解决办法]
不想查出来的字段直接给设置为空不就完了么。
C# code
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=""};
[解决办法]
坐等答案

热点排行