关于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就变成匿名类型,应该不能转化的吧,呵呵..我刚入门
==============================================================
cjc1983
等 级:
发表于:2007-12-14 12:10:3817楼 得分:0
先建个视图
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;
}
我同意这种方法~~
[解决办法]
A[] aa = (from a in dc.A
join b in dc.B
on a.deptid equals b.deptid
where a.deptid == a.deptid
select a).ToArray();
[解决办法]
[解决办法]
定义一个类就OK了