在做项目时,遇到一个左外连接的问题。现在和大家分享如下:
帐单表:tbZd 字段如下
autoid int //帐单编号
name varchar //帐单名称
Menu1ZDid int
addtm datetime
isdel bit
description varchar
用户订制 tbDzzD 表
autoid numeric
cmobile varchar
ZDID int //帐单编号
MustInput varchar
addtm datetime
istui bit
fdcarea varchar
现在的问题是在两表中统计不同帐单的用户数那么就会用联表查询。
在sqlserver 我是这样写的。
SELECT a.name, isnull(cnt, 0) 'cnt' FROM tbZD a LEFT JOIN
(SELECT b.name, a.cmobile, COUNT(*) 'cnt'
FROM tbDZZD a INNER JOIN tbZD b ON a.ZDID = b.autoid WHERE a.istui = 0 AND b.isdel = 0
GROUP BY b.name, a.cmobile) b ON a.name = b.name
在SQL这是可行的。
但在linQ中并没有 LEFT join on 。那么在linq中如何实现这样 的查询结果呢。
苦想之下我是这样解决的。大家看看如何
这样觉得还是复杂,不知道还有没有更好有的办法。