如何使用数据库中的“And”子句搜索关键字:LINQ To SQL

时间:2013-10-22 12:50:48

标签: c# linq entity-framework c#-4.0 linq-to-sql

我最近开发了一个搜索功能,它在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。

Database Table

2 个答案:

答案 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();
相关问题