SQL連接中加條件查詢的LINQ表達式寫法
為了提高開發(fā)效率,公司的的開發(fā)大量采用LINQ To SQL進行開發(fā)
在這里把項目中遇上的問題和大家分享一下。(即LINQ to sql 連接加條件查詢的問題)
問題描述:
表結(jié)構(gòu)以及相關(guān)測試數(shù)據(jù)腳本如下:
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
現(xiàn)在有這樣一個需求,就是需要顯示出所有的會員信息(即MemberInfo)的信息,但排序需按照會員排序表(MemberSort)中會員類型(MemberType)為0的SortNumber列進行排序。
聽起來有點繞哈,分解一下
1.需要顯示出所有的會員信息;
2.按照會員排序表中的SortNumber列進行排序;
3.只按照會員排序表中會員類型為0的會員進行排序;
內(nèi)容清楚了,采用傳統(tǒng)SQL方式查詢,實現(xiàn)代碼為
SELECT [t0].[MemberID], [t0].[MemberName] |
我們也希望在LINQ TO sql當(dāng)中獲取同樣的支持
即這樣表達
var data = from m in db.MemberInfo |
但很不幸報錯了。哎難道MS又開我們的玩笑,當(dāng)時為了項目進度,有同事把其實現(xiàn)方式先換成了SQL方式實現(xiàn)。
后來幾經(jīng)周折,終于找到了答案
var data = from m in db.MemberInfo |
關(guān)鍵語句即from cx in x.Where(d=>d.MemberType==0).DefaultEmpty();
即為返回連接組合當(dāng)中MemberType==0或不存在MemberType值的數(shù)據(jù)集合。
問題解決了,希望可以讓朋友們少走彎路,遇到類似的問題可以很容易得到解決
【編輯推薦】