如何编写一个方法来处理ASP.NET中高级搜索特性的所有排列

本文关键字:搜索 中高级 NET 排列 ASP 处理 何编写 方法 一个 | 更新日期: 2023-09-27 18:10:59

我有一个ASP。具有高级搜索选项卡的。NET网页。在这个选项卡中,我有10个字段,可以用来进一步优化搜索。我想写一个方法来处理所有的排列结果,从这个搜索

实现这一目标的最佳方法是什么?我知道我不能创建一个搜索对象来保存所有的值并将其传递进来,因为对象不能从业务层公开到UI层)。

如何编写一个方法来处理ASP.NET中高级搜索特性的所有排列

var query = dc.MyTable; // Base query here
if (Field1.Text != "") // Filter Field1
    query = query.Where(x => x.Field1 == Field1.Text);
if (Field2.Text != "") // Filter Field2
    query = query.Where(x => x.Field2 == Field2.Text);
grid.DataSource = query;

如果你使用的是LinqDataSource,你可以在Where子句中指定如下(未测试):

"(@Param1 == String.Empty || Field1 == @Param1) && (@Param2 == String.Empty || Field2 == @Param2) && etc... "

其中@Param1, @Param2等…定义为控件中的WhereParameters。我用的是String。

你有这些选择:

  • PredicateBuilder from Joseph Albahari
  • 动态linq(非常灵活,允许从字符串构建linq查询)