如何构建内部搜索引擎?

时间:2011-08-01 15:37:06

标签: c# wpf search

我正在寻找一种方法来构建一个内部搜索引擎,根据标准搜索交易。 我有的问题是更多的标准意味着更多的检查..所以如果有6个标准..我几乎要在IF语句中做6 x 6 = 36 ELSE。那个巨大的...我很确定还有其他方法可以做到。

说明:如果我的对象有A,B,C,D,E,F我必须检查是否

A,B,C,D,E NOT F
A,B,C,D, NOT E, F
A,B,C, NOT D, E, F
etc..

那么我怎么能处理这个? (我在WPF中使用C#)

编辑:这里有更多细节。

  • 这是代码而不是SQL。
  • 必须评估的条件数取决于用户。

感谢。

2 个答案:

答案 0 :(得分:2)

执行此类操作的方法是构建某种表达式树。这可能只是标准对象列表。每个对象都有一个“检查”方法来说明元素是否通过了测试。您可以在运行时构建此列表,然后使用它来检查每个候选者。

或者看看LINQ。它非常适合。

答案 1 :(得分:0)

我假设你正在构建一个sql命令。通常我们只会添加一系列IF / CASE语句(每个可能的参数一个)来附加SQL。但是现在,您可以使用LINQ:

var q = from c in Customers select c;

if(!String.IsNullOrEmpty(param.Name))
    q = q.Where(c => c.Name.Contains(param.Name));

if(param.CustID.HasValue)
    q = q.Where(c => c.ID == param.CustID);

if(!String.IsNullOrEmpty(param.CustAddr))
    q = q.Where(c => c.Addr.Contains(param.CustAddr));

//use your results!