一尘不染

在LINQ to SQL中使用contains()

c#

我正在尝试使用linq-to-
sql在应用程序中实现非常基本的关键字搜索。我的搜索项位于一个字符串数组中,每个数组项都是一个单词,我想查找包含搜索项的行。我不介意它们是否仅包含搜索词(很可能会包含),但所有搜索词都必须存在。

理想情况下,我想要与下面的代码段相似的内容,但是我知道这行不通。另外,我在这里查看了这个问题,但是该问题的作者似乎满足于反方向(query.Contains(part.partName))做事,这对我不起作用。

public IQueryable<Part> SearchForParts(string[] query)
{
    return from part in db.Parts
           where part.partName.Contains(query)
           select part;
}

我该如何重写此查询,以便它将执行我需要的操作?


阅读 824

收藏
2020-05-19

共1个答案

一尘不染

看着其他尝试让我很伤心:(

public IQueryable<Part> SearchForParts(string[] query)
{
  var q = db.Parts.AsQueryable();

  foreach (var qs in query)
  { 
    var likestr = string.Format("%{0}%", qs);
    q = q.Where(x => SqlMethods.Like(x.partName, likestr));
  }

  return q;
}

假设:

  • partName看起来像:“ ABC 123 XYZ”

  • 查询为{“ ABC”,“ 123”,“ XY”}

2020-05-19