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

关于LINQ中多表关联的问题.
假如有A,B两个表,A字段为 name,deptid B为deptid,deptname。是个主从表。一个方法返回A,B表的关联记录,想问一下这个方法应该返回社么类型??

------解决方案--------------------
如你所愿:
C# code

private   [color=#FF0000]IEnumerable[/color]   GETLIST() 
{ 
        var   result   =   from   p   in   db.B 
                          select   new 
                          { 
                              //生成含Name,Deptid,Deptname三个属性的匿名类型 
                                  Name=p.A.name, 
                              Deptid=p.deptid, 
                              Deptname=p.deptname 
                          }; 
          return   XX; 
}

------解决方案--------------------

C# code

private IEnumerable  GETLIST() 
{ 
        var   result   =   from   p   in   db.B 
                          select   new 
                          { 
                              //生成含Name,Deptid,Deptname三个属性的匿名类型 
                                  Name=p.A.name, 
                              Deptid=p.deptid, 
                              Deptname=p.deptname 
                          }; 
          return   result; 
} 

//其实我们也可以更无耻地向上转换啊,哪个对象敢说自己不是object?数据绑定控件会自动识别该object是否实现了必须的接口的
private IEnumerable  GETLIST() 
{ 
        var   result   =  db.B.select(p=>Name=p.A.name,Deptid=p.deptid,Deptname=p.deptname);                       
        return   result; 
}

------解决方案--------------------
C# code

//其实我们也可以更无耻地向上转换啊,哪个对象敢说自己不是object?数据绑定控件会自动识别该object是否实现了必须的接口的
private object  GETLIST() 
{ 
        var   result   =  db.B.select(p=>Name=p.A.name,Deptid=p.deptid,Deptname=p.deptname);                       
        return   result; 
}

------解决方案--------------------
//其实我们也可以更无耻地向上转换啊,哪个对象敢说自己不是object?数据绑定控件会自动识别该object是否实现了必须的接口的
private object GETLIST() 

var result = db.B.select(p=>Name=p.A.name,Deptid=p.deptid,Deptname=p.deptname);
return result; 



这样可以返回回去 ,但是如果需要再对返回的值进行LinQ筛选你返回的这个可以吗?
------解决方案--------------------
先建个视图
public class VAB
{
public string Name;
public int DeptId;
public string DeptName;
}

在查询
public IQueryable<VAB> SearchAB()
{
IQueryable<VAB> recordList = from a in db.A
join b in db.B on a.DeptId equals b.DeptId
select new VAB
{
Name = a.Name;
DeptId = a.DeptId;
DeptName = b.DeptName;
};
return recordList;
}
------解决方案--------------------
linq_chen 
不灭De传说 说的也有一定的道理

但是
private IEnumerable GETLIST()
{
var result = from p in db.B
select new
{
//生成含Name,Deptid,Deptname三个属性的匿名类型
Name=p.A.name,
Deptid=p.deptid,
Deptname=p.deptname
};
return XX;
}
但是你这样的话.result就变成匿名类型,应该不能转化的吧,呵呵..我刚入门