我正在尝试使用linq-to- sql在应用程序中实现非常基本的关键字搜索。我的搜索项位于一个字符串数组中,每个数组项都是一个单词,我想查找包含搜索项的行。我不介意它们是否仅包含搜索词(很可能会包含),但所有搜索词都必须存在。
理想情况下,我想要与下面的代码段相似的内容,但是我知道这行不通。另外,我在这里查看了这个问题,但是该问题的作者似乎满足于反方向(query.Contains(part.partName))做事,这对我不起作用。
query.Contains(part.partName)
public IQueryable<Part> SearchForParts(string[] query) { return from part in db.Parts where part.partName.Contains(query) select part; }
我该如何重写此查询,以便它将执行我需要的操作?
看着其他尝试让我很伤心:(
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”}