如何加载多对多 LINQ 查询?

2023-12-20

我有以下(非常标准的)表结构:

Post <-> PostTag <-> Tag

假设我有以下记录:

PostID Title
1,     'Foo'
2,     'Bar'
3,     'Baz'

TagID Name
1,    'Foo'
2,    'Bar'

PostID TagID
1      1
1      2
2      2

换句话说,第一篇文章有​​两个标签,第二篇文章有一个标签,第三篇文章没有任何标签。

我想在一个查询中加载所有帖子及其标签但一直未能找到正确的运算符组合。我已经能够加载仅带有标签的帖子 or 当多个标签时重复发帖.

鉴于上面的数据库,我想在 Post 对象的集合属性中接收三个帖子及其标签(如果有)。有可能吗?

Thanks


耶!有效。

如果有人遇到同样的问题,这就是我所做的:

public IList<Post> GetPosts(int page, int record)
{
    var options = new DataLoadOptions();
    options.LoadWith<Post>(p => p.PostTags);
    options.LoadWith<PostTag>(pt => pt.Tag);
    using (var db = new DatabaseDataContext(m_connectionString))
    {
        var publishDateGmt = (from p in db.Posts
                              where p.Status != PostStatus.Hidden
                              orderby p.PublishDateGmt descending
                              select p.PublishDateGmt)
                              .Skip(page * record)
                              .Take(record)
                              .ToList()
                              .Last();
        db.LoadOptions = options;
        return (from p in db.Posts
                where p.Status != PostStatus.Closed 
                    && p.PublishDateGmt >= publishDateGmt
                orderby p.PublishDateGmt descending
                select p)
                .Skip(page * record)
                .ToList();
    }
}

这仅执行两个查询并加载每个帖子的所有标签。

这个想法是获取一些值来限制我们需要的最后一个帖子的查询(在本例中 PublishDateGmt 列就足够了),然后使用该值而不是 Take() 限制第二个查询。

感谢您的帮助西罗科。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何加载多对多 LINQ 查询? 的相关文章

  • 无法将方法组分配给 asp.net、linq、c# 中的隐式类型局部变量

    public void selectqueryasso CustomerOrderResult cso new CustomerOrderResult var a from as1 in ds orders from as2 in ds o
  • Linq 到自定义 SQL

    好的 我有一个带有巨大表的数据库 超过 100 万条记录和 50 多个列 我知道它不是最佳的 但它是我必须处理的 所以我需要运行限制返回数据量的查询 现在我的问题是这样的 我有一些运行并返回数据的自定义查询 用户可以通过选择将生成谓词模板并
  • LINQ to SQL 特性

    我遇到了 LINQ to SQL 的一些特殊情况 通过一个相对简单的查询 我想选择一些字段 但将日期字段格式化为字符串 我首先是这样实现的 var list dataContext MyLists Single x gt x ID myId
  • 创建新控制器时出现错误:“不支持的上下文类型”

    我将使用 ASP NET MVC3 Linq to Sql 类 而不是实体框架 MS SQL Server 2008 pro 而不是 Express ed 来实现 MvcMusicStore 我从那里得到了教程mvcmusicstore c
  • linq2sql,存储库模式 - 如何从两个或多个表查询数据?

    我使用存储库模式 和 linq2sql 作为数据访问 并拥有例如 ProductsRep 和 CustomersRep 在非常简单的场景中 数据库有两个表 产品 产品 ID 客户 ID 产品名称 日期 和顾客 客户 ID 名字 姓氏 每个存
  • 我的 DataContext 怎么错了?

    我使用 LINQ To SQL 一段时间了 我通常在解决方案中执行以下操作 在一个项目中 我创建了一个 dbml 架构 在另一个项目中 我创建了一个简单的 DataAccessLayer DAL 它了解我的第一个项目 并实例化 DataCo
  • LINQ options.loadwith 问题

    我正在编写一个基于标签的 ASP net 系统 使用以下数据库方案 Topic
  • 禁用 LINQ 上下文的所有延迟加载或强制预先加载

    我有一个文档生成器 目前包含约 200 个项目的查询 但完成后可能会超过 500 个 我最近注意到一些映射表示延迟加载 这给文档生成器带来了一个问题 因为它需要根据生成的文档来访问所有这些属性 虽然我知道DataLoadOptions可以指
  • 有没有任何工具可以查看针对数据库运行的查询?

    是否有任何工具可以检查 asp net 或 sql server 并报告针对数据库运行的所有查询 我问这个问题的原因是我正在一个项目中使用 Linq 并且想要仔细检查它对每个页面实际执行的操作 理想情况下 我想在浏览器中查看页面并获得为创建
  • LINQ-SQL 重用 - CompiledQuery.Compile

    我一直在研究 LINQ SQL 试图获得可重用的表达式块 以便将其热插入到其他查询中 所以 我从这样的事情开始 Func
  • 具有 LINQ 支持的最完整的 ORM?

    我正在寻找一个提供完整或接近完整的 LINQ 支持的 ORM LINQ 到 SQL 支持 LINQ 内部的所有内容 Contains Math Log 等 在不创建新数据上下文的情况下无法预先加载关系属性 ADO NET 实体框架 糟糕的
  • Linq to SQL DTO 和复合对象

    我使用与其他人类似的方法将 LINQ 对象保留在 LINQ 数据提供程序中并返回 IQueryable 以允许过滤等 这对于按 ID 或其他属性过滤简单对象来说效果很好 但我遇到了问题由其他子对象组成的连接表对象 CoreDBDataCon
  • 而不是SQL Server中的触发器丢失SCOPE_IDENTITY?

    我有一个表 我在其中创建了一个INSTEAD OF触发执行一些业务规则 问题是当我将数据插入该表时 SCOPE IDENTITY 返回一个NULL值 而不是实际插入的身份 插入 范围代码 INSERT INTO dbo Payment Da
  • 尝试实现 LeftJoin 扩展方法以与 EF Core 2.0 一起使用

    我正在尝试使用扩展方法来实现返回的左外连接IQueryable针对 EF Core 2 0 数据上下文运行 我在这里阅读了 Stack Overflow 线程以寻求帮助 使用 LINQ 的 IQueryable 左外连接的扩展方法 http
  • 使用 Lambda 表达式从字段名称中选择不同的字段

    我需要从数据库表中获取两个字段 使用 linq to sql 检索 一个字段是日期时间 并且是固定字段 另一个字段始终是十进制 但该字段可以不同 该表保存的货币数据每天以不同的货币处理两次 因此可能具有 AM USD PM USD AM E
  • 如何使用 LAMBDA 表达式在 LINQ 中执行 IN 或 CONTAINS?

    我有以下 Transact Sql 我正在尝试将其转换为 LINQ 并且很挣扎 SELECT FROM Project WHERE Project ProjectId IN SELECT ProjectId FROM ProjectMemb
  • 如何识别拼写不同的相似单词

    我想从数据库中过滤掉重复的客户名称 一位客户可能有多个同名但拼写差异不大的系统条目 这是一个示例 名为 Brook 的客户可能有 3 个系统条目 有了这个变化 布鲁克 贝尔塔 布鲁克 贝尔塔 比鲁克 贝尔塔 假设我们将此名称放入一个数据库列
  • EF 6 从没有导航属性的其他表中选择

    我有一个小问题需要帮助解决 我有以下情况 例如 我想选择所有养狗的学生 我有 2 张桌子 students id name petid pet id name 但是它们之间没有指定的外键 没有导航属性 虽然我有但没有指定它并且我不想要我的情
  • 多列上不区分大小写的组

    无论如何 是否可以执行 LINQ2SQL 查询来执行类似的操作 var result source GroupBy a gt new a Column1 a Column2 or var result from s in source gr
  • 如何在 Linq 中获得左外连接?

    我的数据库中有两个表 如下所示 顾客 C ID city 1 Dhaka 2 New york 3 London 个人信息 P ID C ID Field value 1 1 First Name Nasir 2 1 Last Name U

随机推荐