成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL連接中加條件查詢的LINQ表達式寫法

運維 數據庫運維
本文通過實例,講述了SQL連接中加條件查詢的LINQ表達式寫法,以提高開發效率。

為了提高開發效率,公司的的開發大量采用LINQ To SQL進行開發

在這里把項目中遇上的問題和大家分享一下。(即LINQ to sql 連接加條件查詢的問題)

問題描述:

表結構以及相關測試數據腳本如下:

create table MemberInfo
(
    MemberID int,
    MemberName nvarchar(50)
)
create table MemberSort
(
    MemberId int,
    SortNumber int,
    MemberType int
)
insert into MemberInfo values (1,'A')
insert into MemberInfo values (2,'B')
insert into MemberInfo values (3,'C')
insert into MemberInfo values (4,'D')
insert into MemberInfo values (5,'E')

insert into MemberSort values (1,5,0)
insert into MemberSort values (2,4,0)
insert into MemberSort values (3,3,1)

--Drop table MemberInfo
--Drop table MemberSort

 

現在有這樣一個需求,就是需要顯示出所有的會員信息(即MemberInfo)的信息,但排序需按照會員排序表(MemberSort)中會員類型(MemberType)為0的SortNumber列進行排序。

聽起來有點繞哈,分解一下

1.需要顯示出所有的會員信息;

2.按照會員排序表中的SortNumber列進行排序;

3.只按照會員排序表中會員類型為0的會員進行排序;

內容清楚了,采用傳統SQL方式查詢,實現代碼為

SELECT [t0].[MemberID], [t0].[MemberName]
FROM [dbo].[MemberInfo] AS [t0]
LEFT OUTER JOIN [dbo].[MemberSort] AS [t1] ON ([t1].[MemberType] =0) AND
([t0].[MemberID] = [t1].[MemberID])
ORDER BY
    (CASE
        WHEN [t1].[SortNumber] IS NOT NULL THEN [t1].[SortNumber]
        ELSE 9999
     END)

我們也希望在LINQ TO sql當中獲取同樣的支持

即這樣表達

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;

但很不幸報錯了。哎難道MS又開我們的玩笑,當時為了項目進度,有同事把其實現方式先換成了SQL方式實現。

后來幾經周折,終于找到了答案

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值的數據集合。

問題解決了,希望可以讓朋友們少走彎路,遇到類似的問題可以很容易得到解決

【編輯推薦】

  1. 有效使用SQL Server的自動管理功能
  2. 將SQL 2000日志遷移到SQL Server 2008
  3. 升級SQL Server 2008數據庫引擎
責任編輯:book05 來源: 博客園
相關推薦

2011-10-28 16:34:13

LINQ

2009-09-10 15:35:07

LINQ查詢表達式

2009-09-07 17:18:33

LINQ查詢表達式

2009-09-11 09:53:16

Linq查詢表達式

2009-08-27 09:13:28

LINQ查詢表達式

2009-09-17 11:08:55

LINQ查詢表達式

2009-09-17 09:09:50

Lambda表達式Linq查詢

2009-06-12 09:44:04

LINQ查詢復合from子句

2009-09-09 13:01:33

LINQ Lambda

2009-09-11 12:32:33

LINQ表達式

2009-09-15 15:18:00

Linq Lambda

2009-09-09 17:45:07

Linq表達式

2009-09-11 09:48:27

Linq Lambda

2009-09-17 14:21:19

LINQ表達式

2009-09-17 09:15:49

Linq表達式樹

2009-09-15 17:30:00

Linq Lambda

2009-09-17 09:44:54

Linq Lambda

2009-09-17 10:40:22

Linq Lambda

2009-09-17 14:24:35

LINQ表達式

2009-09-09 17:14:17

Linq lambda
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日日夜夜草| 韩日一区二区 | 日韩欧美在线免费 | 日韩第1页 | 国产一二三区电影 | av中文在线观看 | 国产探花在线观看视频 | 丝袜一区二区三区 | 亚洲va在线va天堂va狼色在线 | 给我免费的视频在线观看 | 国产激情视频在线观看 | 国产成人福利视频 | 亚洲一区久久 | 日本成人中文字幕 | 成年人视频免费在线观看 | 亚洲一区视频在线 | 久久久久国产 | 欧洲亚洲精品久久久久 | 天天看天天爽 | 99综合 | 99色综合 | 欧美xxxx性xxxxx高清 | 欧美久 | 玩丰满女领导对白露脸hd | 一区二区三区在线播放 | 亚洲视频在线观看 | 99reav | 91久久精品日日躁夜夜躁欧美 | 在线 丝袜 欧美 日韩 制服 | 99免费在线观看 | 欧美男人亚洲天堂 | 国产不卡视频 | 中文字幕亚洲一区 | 久久a久久 | 91精品欧美久久久久久久 | 一区二区三区在线播放 | 一区二区不卡视频 | 国产成人免费网站 | 国产精品毛片av一区 | 国产视频二区在线观看 | 久久一二 |