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

LINQ多表连接解决方法

2012-01-26 
LINQ多表连接C# codevar query from g in db.graveTempjoin a in db.Areaon g.fgrid equals a.Id into t

LINQ多表连接

C# code
                var query = from g in db.graveTemp                            join a in db.Area                            on g.fgrid equals a.Id into temp                            from t in temp.DefaultIfEmpty()                            join s in db.SubArea                            on g.subarea equals s.Id into temp1                            from t1 in temp1.DefaultIfEmpty()                            join c in db.Customer                            on g.gvid equals c.FgrvId into temp3                            from t3 in temp3.DefaultIfEmpty()                            select new                             {                                gvid=g.gvid,                                gno=g.gno,                                gname=g.gname,                                areaid=g.fgrid,                                areaName=t==null?null:t.AreaName,   //地区名                                kindId=t==null?null:t.FgkID,        //类型编号                                subAreaId=g.subarea,                                subAreaName=t1==null?null:t1.SubName,                                boxes=g.grvboxes,                                state=t3==null?"否":"是"                            };

这么写貌似有点不规范 subareaname处 数据有误 看着凌乱的给个3表左链接的示例就行 3q

[解决办法]
http://topic.csdn.net/u/20110407/10/55a95e14-0f2e-4faa-b5e5-4d12bdeed169.html
[解决办法]
5楼的 或许我这样写 你容易理解一点:

var query = from g in db.graveTemp
join a in db.Area
on g.fgrid equals a.Id into temp
from a in temp.DefaultIfEmpty()
select new{ gname=g.gname,areaName=a==null?"":a.AreaName //地区名}

热点排行