我正在寻找一种方法来构建一个内部搜索引擎,根据标准搜索交易。 我有的问题是更多的标准意味着更多的检查..所以如果有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#)
编辑:这里有更多细节。
感谢。
答案 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!