C# 如何建立一个内部搜索引擎?
我正在寻找一种方法来建立一个内部搜索引擎,根据标准搜索交易。 我的问题是更多的标准意味着更多的检查。。因此,如果有6个标准。。在IF语句中,我几乎必须执行6x6=36的其他操作。那么大。。我很肯定还有别的办法 说明:如果我有一个有A,B,C,D,E,F的对象,我必须检查C# 如何建立一个内部搜索引擎?,c#,wpf,search,C#,Wpf,Search,我正在寻找一种方法来建立一个内部搜索引擎,根据标准搜索交易。 我的问题是更多的标准意味着更多的检查。。因此,如果有6个标准。。在IF语句中,我几乎必须执行6x6=36的其他操作。那么大。。我很肯定还有别的办法 说明:如果我有一个有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.. 那我怎么处理呢?(我将C#与WPF一起使用) 编辑:这里有更多的细节 这是代码而不是SQL 必须评估的标准
A,B,C,D,E NOT F
A,B,C,D, NOT E, F
A,B,C, NOT D, E, F
etc..
那我怎么处理呢?(我将C#与WPF一起使用)
编辑:这里有更多的细节
- 这是代码而不是SQL李>
- 必须评估的标准数量取决于用户
谢谢。这样做的方法是建立某种表达式树。这可能只是标准对象的列表。每个对象都有一个“检查”方法来说明元素是否通过了测试。您可以在运行时构建此列表,然后使用它检查每个候选项
或者看看林克。它非常适合。我假设您正在构建一个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!
你能发布更多的细节吗,比如你有什么样的标准?它们是如何指定给搜索引擎的,等等。这将使回答更容易。您对需要多少IF语句的计算是不正确的。您需要的是2^6=64个语句,而不是6^2。如果同时需要A=“blah”和A NOT=“blah”,则需要2^7=128次检查。(嗯,这是对的吗?)(显然我并不是建议你实际上硬编码128条if语句)@Brian我希望这就是为什么我在这里问lol,但是的,我犯了一个错误,我需要64条语句。。但是我不能硬编码这个。。那太疯狂了。@Lasse我有一个对象和一个搜索引擎,在那里你可以输入6个标准。您必须能够评估这6个标准,以确定事务是否是结果的一部分。它应该是
q=q.Where…
,否则您只是扔掉新的IQueryable
对象。因此,基本上是在每个步骤中消除事务(那些不符合标准的事务)用LINQ查询?很有趣。嗯,我正在考虑为这个制作一个对象,但我认为这会导致完全相同的问题。但也许不是。。我们得看看这个,有各种各样的方法。诀窍是要记住,您可以在运行时构建和使用数据结构。不要被“静态”思维所束缚。这个解决方案非常有效。谢谢你帮我节省了很多时间!