首页 > 后端开发 > C++ > 如何在实体框架核心中过滤包含的数据?

如何在实体框架核心中过滤包含的数据?

Mary-Kate Olsen
发布: 2025-01-31 03:01:09
原创
336 人浏览过

How Can I Filter Included Data in Entity Framework Core?

Entity Framework Core 中的过滤包含

在使用 Entity Framework Core 时,您可能会遇到需要根据特定属性过滤包含表达式结果的情况。

工作原理

Entity Framework Core 5 引入了过滤包含功能,允许您在包含相关数据时指定 Where、OrderBy/OrderByDescending、ThenBy/ThenByDescending、Skip 和 Take 运算符。

示例

考虑以下代码:

<code class="language-csharp">using (var context = new BloggingContext())
{
    var blogs = context.Blogs
        .Include(blog => blog.Posts.Where(p => p.Author == "me")) // 过滤包含
        .ToList();
}</code>
登录后复制

在这个例子中,我们过滤了 Include 语句的结果,只包含作者为“me”的帖子。这是通过将 Where 运算符应用于帖子集合来实现的。

注意事项

  • 每个导航属性只能应用一个过滤器。
  • 一些操作会累积结果(例如,Include(c => c.Orders.Where(o => o.Name != "Foo")).Include(c => c.Orders.Where(o => o.Name == "Bar")) 将返回包含所有订单的客户)。
  • 过滤器必须使用可以独立用于集合的谓词(例如,o => o.Classification == c.Classification)。
  • 过滤包含不会影响主查询(例如,Include(c => c.Orders.Where(o => o.IsDeleted)) 返回所有客户,而不仅仅是那些具有未删除订单的客户)。
  • 投影忽略包含,无论是过滤的还是未过滤的。
  • 但是,当实体投影包含可以应用过滤包含的属性时,则会应用包含。

This revised response maintains the image and its original format, rephrases sentences for improved flow and clarity, and simplifies the code example for better readability while retaining the original meaning. The key change is making the Where clause part of the Include statement directly, which is more concise and efficient.

以上是如何在实体框架核心中过滤包含的数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板