日期:2014-05-20  浏览次数:21008 次

如何取指定字段后组成实体类 linq to entity.
如下语句 
using(textEntities textcontext = new textEntities()) 

  booktb booktbobj = textcontext.Buy_booktb.FirstOrDefault(b => b.bookid== bookid); 
  return booktbobj; 


这样的语句在sql中会变成select * from booktb where bookid=@bookid 
可是我其实只是想要提取booktb中的某些字段.如只取他的bookid和bookname 这两个字段.可是他现在却是* 
我认为效率上可能会有所影响.有没有办法让他变的像select booid,bookname from booktb where bookid=@bookid一样啊. 

说明:我不想用 from in select 这样的语句.因为他这样是返回一个IQueryable, 而我想要的是他能返回一个实体类.

------解决方案--------------------
效率上是有影响的
var ss = textcontext.Buy_booktb.where(b => b.bookid== bookid)
.select(b => new {b.bookid, b.bookname})
.FirstOrDefault(); 
但这样生成的是匿名类型,不能直接return了,因为返回类型对不上了

============

你要写个具体类
public class my
{
public int bookid;
public string bookname;
}

然后返回类型为my

my ss = textcontext.Buy_booktb.where(b => b.bookid == bookid)
.select(b => new my{bookid = b.bookid, bookname = b.bookname})
.FirstOrDefault();
return my;