0

我最近开发了一个搜索功能,它在 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 进行搜索和搜索,那将有所帮助。

我正在添加有关我的数据库外观的更多详细信息。如果我搜索 Pet-Friendly 和 Wi-Fi,那么我应该得到 Id=1。

数据库表

4

2 回答 2

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();
于 2013-10-22T13:23:51.893 回答
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();
于 2013-10-22T13:26:12.790 回答