搜索linq to sql的例子我用来通过一个文本框搜索DB表中的多个字段:
var TheOutput = (from t in TheDC.SomeTable
where TheIDs.Contains(t.ID) && (
t.column1.Contains(TheSearchTerm) ||
t.column2.Contains(TheSearchTerm) ||
t.column3.Contains(TheSearchTerm) )
select t.ID).ToList();
}
但它很慢,因为字段是文本字段(名称,姓氏,电子邮件......)。使用什么策略快速搜索一个文本框?
答案 0 :(得分:1)
你可以试试这样的东西吗?
var TheOutput = TheIDs.Select(id => TheDC.SomeTable.Find(id)).Where(t =>
t.column1.Contains(TheSearchTerm) ||
t.column2.Contains(TheSearchTerm) ||
t.column3.Contains(TheSearchTerm)
)
答案 1 :(得分:1)
假设字符串包含导致速度减慢,那么值得尝试全文索引。
你需要运行类似的东西:
CREATE UNIQUE INDEX unique_index_on_id ON TheDc.SomeTable(ID);
CREATE FULLTEXT CATALOG ft AS DEFAULT;
CREATE FULLTEXT INDEX ON TheDc.SomeTable(column1, column2, column3)
KEY INDEX unique_index_on_id
WITH STOPLIST = SYSTEM;
有关详细信息,请参阅MSDN docs
那说使用SQL分析器总是值得的(或者如果你使用EF很棒的EF Profiler from Hibernating Rhinos)来确认生成的SQL符合你的预期