使用SQLFunction.Difference和EF搜索多个字符串

时间:2016-09-08 13:05:40

标签: c# sql-server entity-framework

当输入是单个字符串

时,这很有用

在这个例子中“Lorem ipsum”

dbContext.NewsArticles.Where(article => SQLFunction.Difference(article.Text, "Lorem ipsum") == 3).ToArray()

如何通过多个字符串进行搜索?换句话说,输入是字符串[]或列表

var input = new List<string>{
 "Lorem ipsum dolor",
 "elementum lacinia",
 "cursus nulla molestie",
}

这甚至可能吗?

2 个答案:

答案 0 :(得分:1)

您应该可以将该列表与Any一起使用。

dbContext.NewsArticles
    .Where(article => input.Any(x => SQLFunction.Difference(article.Text, x) == 3))
    .ToArray();

答案 1 :(得分:0)

取决于表的大小和文本列的数据类型/大小。如果查询计划导致并行查询,则在日期上对表进行分区(如果这是一个选项并且取决于数据分布)可能会提供正面结果。