Entity Framework下的连表查询问题
我有一个报价单表Order和设备表Equipment.两个表之间是1对0或者1对n的关系。Order有如下字段: OrderId,Customername等等
Equipment有如下字段:EId,OrderId,Price
我要得到的结果列表是:(一个设备显示一行记录)
订单编号(OrderID) 客户名称(Customername) 设备编号(EId) 设备价格(Price)
需要注意的是有可能Order里面有数据,但关联的Equiment没有数据,那么上面显示记录的时候,设备编号和设备价格都为空。
给分不多,望高手能解答 --------------------编程问答-------------------- 顶一个 分 --------------------编程问答--------------------
--------------------编程问答-------------------- 不好意思,修改一下:
using (DataClassesDataContext db = new DataClassesDataContext())
{
var result = from u in db.Order
join n in db.Equipment on u.OrderId equals n.OrderId into temp
from m in temp.DefaultIfEmpty()
select new
{
OrderID = u.OrderId,
Customername = u.Customername,
EId = m.EId == null ? "" : m.EId.ToString(),
Price = m.Price == null ? "" : m.Price.ToString()
};
}
--------------------编程问答-------------------- 楼上正确,其实就是left join,当然left join在linq的语法表现形式很多
var result = from u in db.Order
join n in db.Equipment on u.OrderId equals n.OrderId into temp
from m in temp.DefaultIfEmpty()
select new
{
OrderID = u.OrderId,
Customername = u.Customername,
EId = m == null ? "" : m.EId.ToString(),
Price = m == null ? 0 : m.Price
};
具体形式,可以参考这个资料
http://www.cnblogs.com/lyj/archive/2008/01/24/1051495.html --------------------编程问答-------------------- 楼上,Good --------------------编程问答-------------------- 你们发的不亦乐乎 不见楼主 --------------------编程问答-------------------- 你可以去查一下Entity Framework 的延迟加载的问题
补充:.NET技术 , .NET Framework