博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linq to SQL实现链接加条件查询
阅读量:6813 次
发布时间:2019-06-26

本文共 1593 字,大约阅读时间需要 5 分钟。

需要显示出所有的会员信息(即MemberInfo),排序要求按照会员排序表(MemberSort)中会员类型(MemberType)为0的SortNumber列进行排序。可以总结为三条:1.需要显示出所有的会员信息;2.按照会员排序表中的SortNumber列进行排序;3.只按照会员排序表中会员类型为0的会员进行排序。

  表结构及相关测试数据脚本:

{12568658288120}createtable MemberInfo

(
    MemberID int,
    MemberName
nvarchar(50)
)
createtable MemberSort
(
    MemberId
int,
    SortNumber
int,
    MemberType
int
)
insertinto MemberInfo values (1,'A')
insertinto MemberInfo values (2,'B')
insertinto MemberInfo values (3,'C')
insertinto MemberInfo values (4,'D')
insertinto MemberInfo values (5,'E')
insertinto MemberSort values (1,5,0)
insertinto MemberSort values (2,4,0)
insertinto MemberSort values (3,3,1)
--Drop table MemberInfo
--
Drop table MemberSort

  采用传统的SQL方式查询代码:

{12568658288121}SELECT[t0].[MemberID], [t0].[MemberName]

FROM[dbo].[MemberInfo]AS[t0]
LEFTOUTERJOIN[dbo].[MemberSort]AS[t1]ON ([t1].[MemberType]=0) AND ([t0].[MemberID]=[t1].[MemberID])
ORDERBY
    (
CASE
        
WHEN[t1].[SortNumber]ISNOTNULLTHEN[t1].[SortNumber]
        
ELSE9999
    
END)

  希望在Linq to SQL中获得同样的支持。

  首次尝试失败的代码:

{12568658288122}var data =from m in db.MemberInfo

                           join s in db.MemberSort on m.MemberID equals s.MemberID && s.MemberType ==0
                          
into x
                          
from cx in x.DefaultIfEmpty()
                           orderby cx.SortNumber.HasValue ? cx.SortNumber.Value :
9999
                          
select m;

  经过修正代码如下:

{12568658288123}var data =from m in db.MemberInfo

                           join s in db.MemberSort on m.MemberID equals s.MemberID
                          
into x
                          
from cx in x.Where(d => d.MemberType ==0).DefaultIfEmpty()
                           orderby cx.SortNumber.HasValue ? cx.SortNumber.Value :
9999
                          
select m;

  关键语句即from cx in x.Where(d=>d.MemberType==0).DefaultEmpty(); 即为返回连接组合当中MemberType==0或不存在MemberType值的数据集合。

  

转载地址:http://ntmwl.baihongyu.com/

你可能感兴趣的文章
再次回来!!!
查看>>
判断当前进程是否以管理员权限启动的
查看>>
Javascript交互式金融股票基金图表JavaScript Stock Chart
查看>>
bootstrap-徽章-链接
查看>>
SQL-26 (二次分组)汇总各个部门当前员工的title类型的分配数目,结果给出部门编号dept_no、dept_name、其当前员工所有的title以及该类型title对应的数目count...
查看>>
SQL-55 分页查询employees表,每5行一页,返回第2页的数据
查看>>
DB2 心态
查看>>
Android实现仿IOS带清空功能的文本输入框
查看>>
轻松玩转windows7之一:利用无线玩转虚拟网络
查看>>
:layout_gravity gravity
查看>>
POJ 2478:Farey Sequence
查看>>
linux 心得
查看>>
线上应用故障排查之一:高CPU占用
查看>>
编写差异更新脚本
查看>>
CentOS 6.4下Squid代理服务器的安装与配置
查看>>
CentOS 6.5安装YouCompleteMe使用vim C/C++语法自动补全
查看>>
利用php利用root权限执行shell脚本必须进行以下几个步骤
查看>>
Storm原理及单机安装指南
查看>>
Linux一些有用的操作
查看>>
IAT 注入ImportInject(dll)
查看>>