我正在尝试编写一个LINQ查询,用于搜索记录列表,其中包含一个或多个关键字。
由于我从表中获取关键字,并且每个关键字都有一个可选类别ID,因此变得复杂。
所以,我要求查询的是,给我表中的所有行,其中标题至少有一个(即不是全部)关键字,如果关键字有关联的类别ID,那么该行也必须属于该类别。
var reply = new List<RssFeedItemDto>();
// Get the keywords and categories of interest
var words = (from c in entities.site_user_keyword where c.site_user_id == loggedInUserId select c).ToList();
// Main query
var items = (from c in entities.rss_feed_item select c);
// Filter items.
foreach(var c in words)
{
items = items.Where(x => x.title.Contains(c.word));
//if(c.rss_feed_category_id.HasValue)
//{
// items = items.Where(x => x.rss_feed.rss_feed_category_id == c.rss_feed_category_id);
//}
}
因此,单词是关键字列表,以及optioncal CategoryId。
然后我需要搜索rss表,其中标题包含其中一个关键字。目前,我正在这样做,它正在做一个AND。
因此,生成的sql可能如下所示:
SELECT * FROM table
WHERE title LIKE '%crash%'
AND title LIKE '%mars%'
但我想要的是:
SELECT * FROM table
WHERE title LIKE '%crash%'
OR title LIKE '%mars%'
如何将其更改为OR。
答案 0 :(得分:1)
你走了:
shared_folder_id