不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
Linq多表Join实现及优化(方法语法)
编辑:dnawo 日期:2013-07-11
有三张表要进行inner join查询,表结构如下:
参照两表Join语句,使用方法语法可以这么写:
这样虽可以达到要求,但每Join一张表,new中字段就得重复写一次,若返回字段多,书写麻烦,语句也非常长,经过测试,最终优化如下:
当然了,也可以用Linq查询语法来实现,那就简单多了:
复制内容到剪贴板
程序代码

--TabA
create table TabA
(
Id int identity(1,1) primary key,
Name nvarchar(20)
)
--TabB
create table TabB
(
Id int identity(1,1) primary key,
Name nvarchar(20),
Aid int references TabA(Id)
)
--TabC
create table TabC
(
Id int identity(1,1) primary key,
Name nvarchar(20),
Bid int references TabB(Id)
)
create table TabA
(
Id int identity(1,1) primary key,
Name nvarchar(20)
)
--TabB
create table TabB
(
Id int identity(1,1) primary key,
Name nvarchar(20),
Aid int references TabA(Id)
)
--TabC
create table TabC
(
Id int identity(1,1) primary key,
Name nvarchar(20),
Bid int references TabB(Id)
)
参照两表Join语句,使用方法语法可以这么写:
复制内容到剪贴板
程序代码

var data = context.TabAs.Join(context.TabBs, taba => taba.Id, tabb => tabb.Aid, (taba, tabb) => new { AName = taba.Name, BName = tabb.Name, Bid = tabb.Id }).Join(context.TabCs, item => item.Bid, tabc => tabc.Bid, (item, tabc) => new { AName = item.AName, BName = item.BName, CName = tabc.Name });
这样虽可以达到要求,但每Join一张表,new中字段就得重复写一次,若返回字段多,书写麻烦,语句也非常长,经过测试,最终优化如下:
复制内容到剪贴板
程序代码

var data = context.TabAs.Join(context.TabBs, taba => taba.Id, tabb => tabb.Aid, (taba, tabb) => new { taba, tabb }).Join(context.TabCs, item => item.tabb.Id, tabc => tabc.Bid, (item, tabc) => new { AName = item.taba.Name, BName = item.tabb.Name, CName = tabc.Name });
当然了,也可以用Linq查询语法来实现,那就简单多了:
复制内容到剪贴板
程序代码

var data = from taba in context.TabAs
join tabb in context.TabBs on taba.Id equals tabb.Aid
join tabc in context.TabCs on tabb.Id equals tabc.Bid
select new { AName = taba.Name, BName = tabb.Name, CName = tabc.Name };
join tabb in context.TabBs on taba.Id equals tabb.Aid
join tabc in context.TabCs on tabb.Id equals tabc.Bid
select new { AName = taba.Name, BName = tabb.Name, CName = tabc.Name };
评论: 0 | 引用: 0 | 查看次数: 6929
发表评论
请登录后再发表评论!