该模型包含2个具有多对多关系的实体:CatalogueItems and Keywords。
假设定义了2个变量:
ObjectQuery<Keyword> KW;
ObjectQuery<CatalogueItem> CI;
KW 包含一些用于选择一组关键字的查询。我需要 CI ,从 KW 中选择至少包含一个关键字的所有CatalogueItem。
重要的是:不应预先计算或枚举任何内容。关键字枚举需要花费大量时间,但UI基于实时CatalogueItems显示。一个完美的事情是让 CI 准备好执行。
答案 0 :(得分:0)
这样的事情:
from catalogueItem in CI
from keyword in KW
where catalogueItem.Keywords.Contains(keyword)
select catalogueItem
编辑: 因此,每次都不计算KW,尝试这样做:
var keywords = KW.ToList()
from catalogueItem in CI
from keyword in keywords
where catalogueItem.Keywords.Contains(keyword)
select catalogueItem
否则,我需要在KW和整个数据库中查看查询,以便能够知道如何优化查询。
另一个选择是简单地编写一个存储过程并将其映射到实体框架。
答案 1 :(得分:0)
context.CatalogueItems.Where(ci=> ci.Keywords.Where(cik=>KW.Any(cik)));
那样的东西?请检查语法。