【发布时间】:2016-03-24 17:28:13
【问题描述】:
我有三个表 Keyword、Product 和 KeywordProduct。
- 如果我尝试过滤“the”,则返回 A 和 B 产品
- 如果我尝试过滤“矩阵”,则只返回 B 产品
但是当我过滤“矩阵”时,我也会得到 B 和 A。我只需要获得 B 记录。
代码如下:
var keywordTermList = ("the matrix").Split(' ');
db.Products
.Where(product => product.ProductKeywords.All(k => keywordTermList.Contains(k.Keyword.Name)))
关键词表
+------------+---------+ |关键字 ID |姓名 | +------------+---------+ | 1 |醒来| | 2 |力 | | 3 |的| | 4 |矩阵 | +------------+---------+产品关键字表
+------------+------------+ |关键字 ID |产品编号 | +------------+------------+ | 3(该)|一个 | | 2(力)|一个 | | 1(觉醒)|一个 | | 3(该)|乙| | 4(矩阵)|乙| +------------+------------+产品表有 A 和 B 记录。
我该怎么做呢?过滤“矩阵”时如何只得到 B。
【问题讨论】:
-
var keywordTermList = searchString.Split(' ').Where(t => !ignore.Contains(t)).toList();-- 其中ignore是{ "a", "an", "the", ... }的列表以及您想忽略的任何其他内容。 -
是的,我知道。这只是示例记录。
-
以上似乎不是您真正的查询,因为它最有可能过滤更多数据(例如,如果产品 B 有第三个单词)而不是返回更多记录。
-
你说得对。这会发生......
标签: c# .net linq entity-framework-6