本文筆者用清晰的例項,解決了linq多條件問題,思路十分的清晰,筆者也很細心的做了描述,希望能給你帶來幫助。
最近有個專案準備功能改版,師兄吩咐:盡可能地做到萬般皆linq,所以很多東西都要從儲存過程搬過來..昨天寫評價功能的時候,碰到個linq多條件疊加組合的問題,其需求如下:
多種查詢評價的條件:
1.linq多條件之查詢型別:
收到的評價_買家給我的評價,收到的評價_賣家給我的評價,給出的評價_我給買家的評價,給出的評價_我給賣家的評價
public2.linq多條件之評價型別:enum
opinionsearchtype
全部,好評,中評,差評
publicenum
opiniontype
全部,乙個星期內,乙個月以內,六個月以內,六個月以外
public由於快取的需要,要把expression完成之後再傳到介面那邊獲取相應的list《評價意見》.按照這樣的看的話,enum
opiniontime
總共3個條件, 13個子條件, 排列組合之後, 會有80種的組合. - - 真的乙個個組合去寫的話,還真是累死人了..
左思右想,最好的方法就是把3個條件都拆開來,完成不同的expression,到最後再把三個條件組合在一起成為乙個新的expression.網上找到的比較都只是單條件的parameter, 查了msdn,才知道有個expression.and(left, right)可以完成我的需求.利用.net3.5的擴充套件方法寫成了乙個組合expression的方法,再過載了幾個多引數的表示式,如下:
#region 表示式有了這幾個方法進行linq多條件查詢,原本的需求就可以迎刃而解了: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
expressionbool以上就是通過linq例項解析linq的另類用法,然後解決linq多條件組合問題。>> 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多條件疊加組合的問題,其需求如下 多種查詢評價的條件 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....