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

一个关于LINQ的有关问题

2012-12-15 
一个关于LINQ的问题本帖最后由 stszd604 于 2012-07-13 14:20:06 编辑场景fcategory 在 t_products是编码

一个关于LINQ的问题
本帖最后由 stszd604 于 2012-07-13 14:20:06 编辑 场景  fcategory 在 t_products是编码  他的名称在 t_prod_category表中 

目的  fcategory 显示的是t_prod_category的  fcatename

问题  当在 LINQPAD中  强行指定了返回类  红色部分程序就出错了  
      如果去掉红色部分 使用匿名类型是完全可以的 
      因为这段代码在  数据访问层 所以。。。 需要指定返回类型 




from p in t_products
join c in t_prod_category
on p.fcategory equals c.fcategory
select new t_products
{
        fsku = p.fsku,
        fcategory= c.fcatename,
        fproname=p.fproname,
        funit_price= p.funit_price,
        fdescription= p.fdescription
}



完整方法体 如下 

public  IQueryable<t_products>  GetAll()
{

var res =  
       from p in t_products
       join c in t_prod_category
       on p.fcategory equals c.fcategory
       select new t_products
       {
               fsku = p.fsku,
               fcategory= c.fcatename,
               fproname=p.fproname,
               funit_price= p.funit_price,
               fdescription= p.fdescription
       };
return res;



}


[解决办法]


public IEnumerable<t_products> GetAll()
{

var res =   
  (from p in t_products
  join c in t_prod_category
  on p.fcategory equals c.fcategory
  select new t_products
  {
  fsku = p.fsku,
  fcategory= c.fcatename,
  fproname=p.fproname,
  funit_price= p.funit_price,
  fdescription= p.fdescription
  }).Select(x=>new t_products(){fsku=x.fsku,fcategory=x.fcategory,...});
return res;



}



[解决办法]
你可以自己定义一个综合性的Model,如下

 public class TestMode
    {
        public int no { get; set; }
        public string code { get; set; }
    } 


IQueryable<TestMode> result = from a in EF.T_Province join b in EF.T_City on a.ID equals b.Province_ID select new TestMode { no = a.ID, code = b.Name }; 



[/code]
[解决办法]
引用:
C# code

public IEnumerable<t_products> GetAll()
{

var res =   
  (from p in t_products
  join c in t_prod_category
  on p.fcategory equals c.fcategory
  select new t_products
  {
  fsku = p.fsku,
……


依旧不行
[解决办法]
引用:
你可以自己定义一个综合性的Model,如下

C# code
 public class TestMode
    {
        public int no { get; set; }
        public string code { get; set; }
    } 


C# code
IQueryable<TestMode> result = from a in……



有别的办法么  不要再多一个类
[解决办法]
你要先搞清楚数据访问层的作用

还有,多加一个类几会增加几KB的硬盘容量,为何不能添加?
[解决办法]
引用:
你要先搞清楚数据访问层的作用

还有,多加一个类几会增加几KB的硬盘容量,为何不能添加?


想知道有没有 不用加类的办法 

如果这里的类变化了  
1  Action 里面的动态表达 也要跟随这个地方变化     
2  由于 Action 传递的Model过来  那么ACTION的参数类名变化 
3  model变化之后  MODELBINDING也要随之改变

当然后续的这些问题  都是业务层 动态添加where导致的

  
 业务层代码 大致如下 

public josnresult GetData(t_products model)
{
   var where = model.ExpressionEqual("fcategory",model.fcategory);
   var result = repos.getAll().Where(where).toList();
   return json(result,...);
}


 

热点排行