【发布时间】:2014-11-12 14:27:22
【问题描述】:
我想搜索包含关键字的学生姓名,一开始我通过逗号分隔的关键字,但我发现搜索时间太长了。但是当我将这些关键字转换为数组时,它是真实的快。为什么linq搜索效率差异很大?是数组还是linq的原因?
使用字符串搜索
var keyWord="Lyly,Tom,Jack,Rose"; //and so on,more than 500 names
var student= Context.Students.Where(i => keyWord.Contains(i.Name));//very slow
使用数组搜索
var keyWord="Lyly,Tom,Jack,Rose"; //and so on,more than 500 names
var keyWordArray=keyWord.split(',');
var student= Context.Students.Where(i => keyWordArray.Contains(i.Name));//fast
【问题讨论】:
-
在您的第一个示例中,我们看不到您如何从关键字字符串传递到站集合
-
谢谢。我已经更新了。
-
拜托,你能多贴一些你的代码吗?根据我们所看到的——当然它是不完整的——我可以在第一个示例中告诉您,您的代码正在将 Contains 函数应用于一个非常大的字符串,因此这很容易成为缓慢的根源