我最近开发了一个搜索功能,它在Tag表的EnglishValue列上搜索数据库。我从搜索框中收到关键字列表,然后使用以下查询进行搜索,它给出了正确的结果。
List<string> keywords = new List<String>(searchText);
IQueryable<Tag> tags = from p in db.Tags
where keywords.Contains(p.EnglishValue)
select p;
var matchingTagList = tags.ToList();
现在其中一个问题是使用“AND”进行搜索,目前LINQ查询正在执行OR。如果任何人可以提供建议如何使用LINQToSQL进行AND搜索,这将有所帮助。
我正在添加有关数据库外观的更多详细信息。如果我寻求宠物友好和Wi-Fi,我应该得到Id = 1。
答案 0 :(得分:1)
试试这个:
List<string> keywords = new List<String>(searchText);
IQueryable<Tag> tags = from p in db.Tags
where keywords.All(x=> p.EnglishValue.Contains(x))
select p;
var matchingTagList = tags.ToList();
答案 1 :(得分:0)
试试吧。这就是为什么我喜欢LINQ。假设您的关键字包含该术语,此处还有一些名为Num = 5的变量;
List<string> keywords = new List<String>(searchText);
IQueryable<Tag> tags = from p in db.Tags
where keywords.Contains(p.EnglishValue) && p.num==5
select p;
var matchingTagList = tags.ToList();