none
linq to sql查询生成匿名类的问题 RRS feed

  • 问题

  • 您好,我使用三层架构(Web BLL DAL),DAL使用linq to sql在一个查询产品的方法中使用如下方法:

    pulic IQueryable<Model.Product> QueryAllproducts()

    {

         DBDataContext db=new DBDataContext();

         IQueryable<Model.Product> data=from p in db.Product select p;

         return data;

    }

    BLL层 

     pulic IQueryable<Model.Product> QueryAllproducts()

    {

         return dal.QueryAllproducts();

     }

    这样的方法可以正常运行调用,但是却把产品表的所有字段都查询出来了,我现在只想去所需要查询的列,进行如下改动 DAL方法:

    public IQueryable<Model.Product>  QueryAllproducts()

    {

         DBDataContext db=new DBDataContext();

         var  data=from p in db.Product select  new

          {

             id=p.id,

             price=p.price

          };

        return data;

    }

    这样是错误的因为匿名类型无法转换成IQueryable<Model.Product>。如果要改动这样的代码必须在Model下新建一个类,包含id和price字段.但是这样太麻烦了吧,我在linq的设计器里把product表拖进去了,却还得新建一个这样的类,那如果我还有其他查询,要查询的是产品的其他字段呢,那得新建好多模型啊,请问老师有没什么好的解决办法呢,希望给出代码,谢谢了!!!!

     

     

    2011年5月28日 12:21

答案

全部回复