LinqDataSource动态参数 - 使用WhereParameters强制OR

时间:2010-07-22 14:49:58

标签: asp.net linq linqdatasource

在我的“选择”语句中,我需要在使用LinqDataSource's WhereParameters collection时添加两个动态参数:

e.WhereParameters.Add(param, True)

但是,系统会将这些参数添加为 AND ,但我想执行 OR ,其中parameter 1或者parameter 2是真的。

如何做到这一点?

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。我用它非常成功。