在我的“选择”语句中,我需要在使用LinqDataSource's WhereParameters collection时添加两个动态参数:
e.WhereParameters.Add(param, True)
但是,系统会将这些参数添加为 AND
,但我想执行 OR
,其中parameter 1
或者parameter 2
是真的。
如何做到这一点?
答案 0 :(得分:2)
如果您在设计时不知道params的数量,并且只能在运行时确定,请考虑在运行时更改数据源的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");
如果你在运行时知道 n 参数,你可以简单地将OR语句放在设计时,并修改它们的值。
也许将您的OR
子句放在LinqDataSource声明中。
<asp:LinqDataSource ID="LinqDataSource1" runat="server"
Where="Foo == @FooValue OR Bar==@BarValue">
然后您的代码隐藏可以添加这两个where
参数。
LinqDataSource1.WhereParameters.Add("FooValue", "milk");
LinqDataSource1.WhereParameters.Add("BarValue", "eggs");
答案 1 :(得分:0)
你可以使用Joe Albahari的PredicateBuilder。我用它非常成功。