Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq ef core 5.0如何包括_Linq_Entity Framework Core_Ef Core 5.0 - Fatal编程技术网

Linq ef core 5.0如何包括

Linq ef core 5.0如何包括,linq,entity-framework-core,ef-core-5.0,Linq,Entity Framework Core,Ef Core 5.0,我正在尝试使用在Include上过滤的新函数,但不知怎的,我没有正确使用它。 我有一个分类产品。我需要根据类别标题/名称筛选产品。这是一种多对多的关系 类别标题应包含“VLEE”。但是,数据库中的所有产品都会以某种方式被返回,即使它们的类别不正确 var products = await _context.Product .Include(c => c.ProductCategories.Where(c => c.Category.Title.Contains(contain

我正在尝试使用在Include上过滤的新函数,但不知怎的,我没有正确使用它。

我有一个分类产品。我需要根据类别标题/名称筛选产品。这是一种多对多的关系

类别标题应包含“VLEE”。但是,数据库中的所有产品都会以某种方式被返回,即使它们的类别不正确

var products = await _context.Product
   .Include(c => c.ProductCategories.Where(c => c.Category.Title.Contains(containsTitle)))
   .ThenInclude(c => c.Category)
   .ToListAsync();

但是数据库中的所有产品都被返回了

这是因为您正在查询
\u context.Product
。筛选的
Include
用于筛选子集合,而不是主查询。因此,您可以获得所有产品,但所有这些产品都应该只包含通过筛选的类别

您似乎期望EF只返回名称中包含“VLEE”的类别的产品,但这不是筛选
Include
的目的。要实现这一点,您必须过滤产品本身:

_context.Product
    .Where(p => p.ProductCategories.Any(c => c.Category.Title.Contains(containsTitle)))
这可以与过滤的
包含组合,但不一定。如果不过滤
包含的
,则会得到按类别名称过滤的产品,但包含其集合中的所有类别

因此,filtered
Include
使您可以自由地分别筛选查询结果和子集合