我希望这个标题非常直截了当。基本上,我有一个没有安装全文索引的数据库。而不是安装全文索引,我想知道是否有办法用Linq做到这一点?
答案 0 :(得分:1)
我相信你的目标是:
from xx in table
where uids.Contains( xx.uid.ToString() )
select xx
如果您正在进行单独的字符串搜索,可能是:
string input = "some String";
string[] toSearchFor = GetSearchStrings();
var containsAll = toSearchFor.All(x => input.Contains(x));
答案 1 :(得分:1)
您可以在System.String
上编写使用实例方法的LINQ查询。大多数LINQ提供程序都能够将其转换为SQL语句。例如:
from customer in db.Customers
where customer.Name.Contains("foo") || customer.Name.Contains("bar")
select customer;
LINQ to Entities会将此转换为以下内容:
SELECT T1.*
FROM Customers T1
WHERE T1.Name LIKE '%' + @p1 + '%'
OR T1.Name LIKE '%' + @p2 + '%'
请注意,当您需要搜索动态数量的字词时,可以使用PredicateBuilder。它允许您构建包含OR语句的谓词。用工会重写它也是一种有效的方法。例如:
string[] searchWords;
// Define an empty set.
var customers =
from customer in db.Customers
where false
select customer;
// Union the empty set with a set for a word.
foreach (var temp in searchWords)
{
var searchWord = temp;
customers = customers.Union(
from customer in db.Customer
where customer.Name.Contains(searchWord)
select customer);
}