在我的「選擇」的聲明我需要添加兩個動態參數使用時LinqDataSource's WhereParameters collection:的LinqDataSource動態參數 - 迫使或與WhereParameters
e.WhereParameters.Add(param, True)
然而,系統會將這些參數作爲AND
,但我想執行OR
其中parameter 1
或parameter 2
爲真。
這怎麼辦?
在我的「選擇」的聲明我需要添加兩個動態參數使用時LinqDataSource's WhereParameters collection:的LinqDataSource動態參數 - 迫使或與WhereParameters
e.WhereParameters.Add(param, True)
然而,系統會將這些參數作爲AND
,但我想執行OR
其中parameter 1
或parameter 2
爲真。
這怎麼辦?
您可以使用Joe Albahari的PredicateBuilder。我用它取得了巨大的成功。
如果您在設計時不知道參數數量,並且只能在運行時確定,請考慮在運行時更改數據源的Where
屬性。您可以自己插入實際值。
//e.g. we know that we want 4 params this time.
LinqDataSource1.Where =
"Alpha == 1 OR Brave==False OR Charlie> 'Jan 1 1999' or Delta = @DeltaVal";
LinqDataSource1.WhereParameters.Add("DeltaVal", "O'Flanagan");
如果你知道在運行時ñ PARAMS,你可以簡單地把OR語句在設計時,並修改它們的值。
也許把你的OR
子句正確的LinqDataSource聲明。
<asp:LinqDataSource ID="LinqDataSource1" runat="server"
Where="Foo == @FooValue OR [email protected]">
然後你代碼隱藏可以添加這兩個where
參數。
LinqDataSource1.WhereParameters.Add("FooValue", "milk");
LinqDataSource1.WhereParameters.Add("BarValue", "eggs");
使用這種方法的問題是,我不知道我將在公共控制中使用的大約8個不同的「foovalue」或「barvalue」中的哪一個。因此動態添加whereparameter而不是預先聲明它。 我可能會看到是否可以添加兩個通用值,然後在運行時更改屬性的名稱... – Carl 2010-07-23 07:59:01
@Carl:更新以顯示如何在運行時修改位置和參數。 – 2010-07-23 13:35:28
@Carl:這個更新有幫助嗎?如果您需要更多幫助,請發表評論。請記住在StackOverflow社區中註冊並接受答案! – 2010-07-26 21:19:03