成人免费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-17 11:08:55

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 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技術棧公眾號

主站蜘蛛池模板: 欧美中文字幕一区二区三区亚洲 | 色婷婷综合久久久久中文一区二区 | a毛片 | 亚洲福利一区二区 | 欧美黄色网 | 国产成人网 | 精品在线一区二区 | 亚洲一二三在线观看 | 黑人巨大精品欧美一区二区免费 | 亚洲欧美一区二区三区国产精品 | 色免费看| 少妇一级淫片免费放播放 | 国产成人免费视频 | 成人高清在线 | 九九综合| 免费看欧美一级片 | 日韩午夜精品 | 91在线精品一区二区 | av免费入口 | 欧美日韩在线视频一区 | 日本a级大片 | 久久r久久 | 欧美一级黄色片免费观看 | 粉色午夜视频 | 国产电影一区二区 | 91激情视频 | 国产一级免费视频 | 亚州av| 国产精品三级久久久久久电影 | 国产一区二区三区色淫影院 | 天天干天天干 | 国产一区三区在线 | 日本黄视频在线观看 | 91夜色在线观看 | 夜夜艹 | 国产男女精品 | 日本久草 | 99精品久久99久久久久 | 久久99网站| 日韩一区二区在线视频 | www.99热|