簡單解決Linq多條件組合問題《轉》

2022-01-31 06:52:31 字數 3223 閱讀 9485

本文筆者用清晰的例項,解決了linq多條件問題,思路十分的清晰,筆者也很細心的做了描述,希望能給你帶來幫助。

最近有個專案準備功能改版,師兄吩咐:盡可能地做到萬般皆linq,所以很多東西都要從儲存過程搬過來..昨天寫評價功能的時候,碰到個linq多條件疊加組合的問題,其需求如下:

多種查詢評價的條件:

1.linq多條件之查詢型別:

收到的評價_買家給我的評價,收到的評價_賣家給我的評價,給出的評價_我給買家的評價,給出的評價_我給賣家的評價

public

enum

opinionsearchtype  

2.linq多條件之評價型別:

全部,好評,中評,差評

public

enum

opiniontype  

全部,乙個星期內,乙個月以內,六個月以內,六個月以外

public

enum

opiniontime  

由於快取的需要,要把expression完成之後再傳到介面那邊獲取相應的list《評價意見》.按照這樣的看的話,

總共3個條件, 13個子條件, 排列組合之後, 會有80種的組合. - - 真的乙個個組合去寫的話,還真是累死人了..

左思右想,最好的方法就是把3個條件都拆開來,完成不同的expression,到最後再把三個條件組合在一起成為乙個新的expression.網上找到的比較都只是單條件的parameter, 查了msdn,才知道有個expression.and(left, right)可以完成我的需求.利用.net3.5的擴充套件方法寫成了乙個組合expression的方法,再過載了幾個多引數的表示式,如下:

#region 表示式 

public

static

expression contactexpressions(

this

expression exp, 

params

expression exps)   

return

exp;  

}public

static

expression> contactexpressions(

this

expression exp, 

params

expression exps)   

return

(expression>)exp;  

}public

static

expression> contactexpressions(

this

expression exp, 

params

expression exps)   

return

(expression>)exp;  

}public

static

expression> contactexpressions(

this

expression exp, 

params

expression exps)   

return

(expression>)exp;  

}public

static

expression> contactexpressions(

this

expression exp,

params

expression exps)   

return

(expression>)exp;  }  

#endregion

有了這幾個方法進行linq多條件查詢,原本的需求就可以迎刃而解了:

expressionbool

>> expsearchtype = 

null

;  expressionbool

>> expopiniontype = 

null

;  expressionbool

>> expopiniontime = 

null

;switch

(searchtype)   

switch

(opintype)    

switch

(opintime)   

//getpaged(params) 這個方法是用來獲取列表並支援快取儲存的.

return

getpaged(expsearchtype.contactexpressionsbool

>(expopiniontype, expopiniontime),  

userid.usertableprefx(), 

true

, pageindex, pagesize); 

以上就是通過linq例項解析linq的另類用法,然後解決linq多條件組合問題。

轉 簡單解決Linq多條件組合問題

本文筆者用清晰的例項,解決了linq多條件問題,思路十分的清晰,筆者也很細心的做了描述,希望能給你帶來幫助。最近有個專案準備功能改版,師兄吩咐 盡可能地做到萬般皆linq,所以很多東西都要從儲存過程搬過來.昨天寫評價功能的時候,碰到個linq多條件疊加組合的問題,其需求如下 多種查詢評價的條件 1....

多條件動態LINQ 組合查詢

本文章 參考 以往我們都是通過判斷的方式來拼接查詢的sql字串,但是現在我們面對是強型別的linq查詢,是否可以很方便的進行類似查詢。eg string userid string.empty userid e351d301 f64b 412c b9ef 573f41235af2 string us...

多條件組合查詢

多條件作何查詢 gethistorybycon function else if that.data.currentmachine that.data.currentmachine 全部 else if that.data.date2 that.data.date2 請選擇日期 that.data....