1

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

e.WhereParameters.Add(param, True)

但是,系统将这些参数添加为AND,但我想执行OR为真的情况ORparameter 1parameter 2

如何才能做到这一点?

4

2 回答 2

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");
于 2010-07-22T21:33:54.243 回答
0

您可以使用 Joe Albahari 的PredicateBuilder。我使用它取得了巨大的成功。

于 2010-07-22T16:45:44.227 回答