Linq多关键字搜索

本文关键字:搜索 关键字 Linq | 更新日期: 2023-09-27 18:11:18

我有一个情况,我有关键字列在表中包含逗号分隔的关键字。用户可以根据Keyword列提供多个搜索条件进行搜索。例如,用户提供以下搜索词"one,two,three",db列可以包含"one","two","three"中的任何一个,也可以不包含它们。我如何编写一个匹配任何提供的搜索词的查询。

我试过下面的

string[] searchTerm = {"one","two","three"};
query =Product.Where( p=> searchTerm.Any(val => p.Keywords.Contains(val)));

var query=db.Products;
 foreach (string searchword in searchTerm)
  {
    query = query.Where(c => c.Keywords.Contains(searchword ));
  }

但这对我不起作用。
谢谢你,

Linq多关键字搜索

如果您用不同的关键字分割用户提供的文本,例如在字符串[]中转换"one,two",three",您可以这样做:

 string [] keys = keywords.Split(',');
 var query = new List<Product>();
 foreach (var item in keys)
 {
    query = query.Concat ((IEnumerable<Product>)Product.Where(x=>x.KeyWords.Contains(item))).ToList();
 }

的例子:

List<Product> ass = new List<Product>();
Product a = new Product();
a.KeyWords = "one, two, three";
Product a1 = new Product();
a1.KeyWords = "one, three";
Product a2 = new Product();
a2.KeyWords = "five";
ass.Add(a);
ass.Add(a1);
ass.Add(a2);
string userInput = "one, seven";
string [] keys = userInput.Split(',');
var query = new List<Product>();
foreach (var item in keys)
{
    query = query.Concat ((IEnumerable<Product>)ass.Where(x=>x.KeyWords.Contains(item))).ToList();
}
foreach (var item in query )
{
    Console.WriteLine(item.KeyWords);
}

打印:

one, two, three
one, three