在我的“选择”语句中,我需要在使用LinqDataSource 的 WhereParameters 集合时添加两个动态参数:
e.WhereParameters.Add(param, True)
但是,系统将这些参数添加为AND
,但我想执行OR为真的情况OR
。parameter 1
parameter 2
如何才能做到这一点?
在我的“选择”语句中,我需要在使用LinqDataSource 的 WhereParameters 集合时添加两个动态参数:
e.WhereParameters.Add(param, True)
但是,系统将这些参数添加为AND
,但我想执行OR为真的情况OR
。parameter 1
parameter 2
如何才能做到这一点?
如果您在设计时不知道参数的数量,并且只能在运行时确定,请考虑在运行时更改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");
您可以使用 Joe Albahari 的PredicateBuilder。我使用它取得了巨大的成功。