用于连接多个表并在单行中获取逗号分隔值的 LINQ 查询

2024-02-11

我有下表的值。

Account:

Id Name Email
101 Nasir Uddin [email protected] /cdn-cgi/l/email-protection

Role:

Id Title
101 Admin
102 Operator

账户角色:

AccountId RoleId
101 101
101 102

现在我想写一个 linq 以获得如下结果:

用户帐号

AccountId Name Email Roles
101 Nasir Uddin [email protected] /cdn-cgi/l/email-protection Admin, Operator

为了获得上述结果,我在 LINQ 中编写了以下查询。但它没有得到预期的结果。

var userAccount1 = (from account in _db.Accounts
                               join accountRole in _db.AccountRoles on account.Id equals accountRole.AccountId
                               join role in _db.Roles on accountRole.RoleId equals role.Id             
                               select new UserAccountInfo
                               {
                                   AccountId = account.Id,
                                   Name = account.UserFullName,
                                   Email = account.Email,                                 
                                   Roles = string.Join(",", role.Title)
                               });

我终于找到了答案。可以通过不同的方式实现结果。举例如下:

var answer1 = (from account in userAccounts
    join accountRole in accountRoles on account.Id equals accountRole.AccountId
    join role in roles on accountRole.RoleId equals role.Id
    select new UserAccount
    {
        AccountId = account.Id,
        Name = account.Name,
        Email = account.Email,
        Roles = role.Title
    }).ToList().GroupBy(x => new { x.AccountId, x.Name, x.Email }).Select(y => new UserAccount
    {
        AccountId = y.Key.AccountId,
        Name = y.Key.Name,
        Email = y.Key.Email,
        Roles = string.Join(", ", y.Select(a => a.Roles))
    }).ToList();
----------------------------------------------------------------------------
var answer2 = (from account in userAccounts
     join accountRole in accountRoles on account.Id equals accountRole.AccountId
     join role in roles on accountRole.RoleId equals role.Id
     group new { account, role } by new { account.Id, account.Name, account.Email } into ag
     select new UserAccount
     {
         AccountId = ag.Key.Id,
         Name = ag.Key.Name,
         Email = ag.Key.Email,
         Roles = string.Join(", ", ag.Select(x=> x.role.Title))
     }).ToList();
    ----------------------------------------------------------------------------

var answer3 = (from account in userAccounts
     let roles1 = from accountRole in accountRoles
                  join role in roles on accountRole.RoleId equals role.Id
                  where accountRole.AccountId == account.Id
                  select role
     select new UserAccount
     {
         AccountId = account.Id,
         Name = account.Name,
         Email = account.Email,
         Roles = string.Join(", ", roles1.Select(x => x.Title))
     }).ToList();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于连接多个表并在单行中获取逗号分隔值的 LINQ 查询 的相关文章

随机推荐

  • 比较 JPA Criteria API 中的日期实体

    使用 JPA 2 和 EclipseLink 实现 我正在尝试构建一个动态查询 它应该为我带来一些在给定日期之后保留的记录 CriteriaBuilder builder em getCriteriaBuilder CriteriaQuer
  • 如何为 WongKinYiu/Yolov7 姿势估计准备自定义关键点数据集?

    如何准备自定义关键点数据集黄建耀 yolov7 https github com WongKinYiu yolov7 pose estimation 关键点格式描述如下 https cocodataset org format data h
  • 气流中任务的粒度

    对于一项任务 有许多辅助任务 从文件 数据库获取 保存属性 验证 审核 这些辅助方法并不耗时 一个样本 DAG 流 fetch data gt gt actual processing gt gt validation gt gt save
  • Paperclip:如何在 Rails 控制台中存储图片?

    我尝试将本地图像存储在 Rails 控制台中 因为我的本地存储中有很多图片 我使用爬虫下载大量图片 所以我想将它们存储到数据库中 利用回形针来完成一些图像工作 例如缩略图等 如果我使用网页将新图片一张一张保存到数据库中 会花费很多时间 所以
  • 使用 Rails 和 ActiveMerchant 进行定期计费:最佳实践、陷阱、陷阱?

    我们正在准备发布一个大型 Web 应用程序 该应用程序已经开发了一年 我们即将开始集成 ActiveMerchant 来处理该服务的经常性订阅费用 我正在寻找有关考虑我们的要求 如下所列 的最佳实践的任何建议 以及针对常见陷阱或我应该特别考
  • 如何使用 jQuery 将一个 HTML 块替换为另一个 HTML 块

    我想替换以下 html 块 table class t12PageBody cellpadding 0 cellspacing 0 width 100 tr td REGION POSITION 01 td tr table table w
  • 更新插入交易

    我将 Spring 与 PostgreSQL 结合使用 并尝试使用如下代码执行某种 UPSERT jt update delete from A where id 1 jt update insert into A id value val
  • 解析文本区域中的换行符而不允许所有 html 标签

    我有一个文本区域字段 用户可以在其中输入内容 当涉及到在页面上显示他们的条目时 rails 返回 n对于每个换行符 在页面上的 html 中显示为根本没有换行符 据我所知 解决这个问题的标准方法是 gsub命令 替换 n with br 然
  • C# 如何注销 Citrix XenApp 用户会话?

    由于 Citrix 关于其 SDK 的文档绝对为零 因此我在此记录这一点 使用 C 如何以编程方式注销用户会话 使用下面的简单方法通过解析会话并注销单个会话来注销用户会话 using Citrix Common Sdk using Citr
  • Qt/Qml 和方法重载

    刚刚在 Qml 中调用重载的 C 方法时遇到了 Qt 框架的奇怪行为 并试图了解其背后的原因 假设我有一个QList
  • 带星号参数和不带星号参数的调用函数的区别

    我知道 Python 函数定义中星号的含义 不过 我经常看到星号用于调用带有如下参数的函数 def foo args kwargs first func args kwargs second func args kwargs 第一个和第二个
  • 可可印刷

    我已经制作了一个非常适合 A4 页面的视图 现在我想打印它 请注意 我没有使用drawRect或类似的东西 只是一个带有子视图和文本标签的普通视图 我的问题是 我对该视图有一些视图 我使用图层在项目周围放置背景颜色和圆角矩形 子视图不会打印
  • JavaScript 依赖列表

    我有一个需要找出依赖关系的元素列表 I have a b d d c e a取决于b and d and d on c and e 有没有一种方法可以巧妙地构建依赖关系 输出应该 可能 是 b c e d a 克里斯蒂安 假设您想要一个元素
  • 在shell脚本中设置环境变量/在Java程序中访问

    我想在Ubuntu 10 04中使用shell脚本设置环境并想在java程序中访问 我写了这样的shell脚本 bin sh export JAVA home ubuntu echo Variable JAVA 我的java程序是 impo
  • .NET Threadpool工作线程和异步IO线程

    好的 据我了解 NET 线程池维护着许多后台线程 准备用于某种任务 Get SetMinThreads 和 Get SetMaxThreads 方法包含两个可以返回或调整的参数 根据MSDN http msdn microsoft com
  • ASP.net MVC 3 - 在 OnActionExecuting 中获取发布的 JSON 数据

    我使用 jquery 中的 ajax 方法将数据发布到 actin 并使用数据字段传递 JSON 字符串化值来指定要发布的数据 这些已发布到操作 但我无法将它们放入 OnActionExecuting 操作过滤器中 它们不是 Forms 或
  • Android Studio Kotlin 出现 dataSnapshot.getValue 错误

    我在最近的项目中将 java 文件转换为 kotlin 文件 问题是我遇到了以下代码错误 val map dataSnapshot getValue
  • Tensorflow 神经网络预测始终相同

    我有一个深度 CNN 可以预测 3d 图像中每个像素的 0 和 2 之间的标签 我已经在每个像素都标记为 1 的图像上训练了模型 因此 在测试模型时 我相信每个预测都应该是 1 相反 模型仅预测 0 这是整个模型的存储库 https git
  • 如何处理 Elasticsearch 中的重复数据?

    我已经使用父子映射来规范化数据 但据我所知 无法从 parent 文档获取任何字段 这是我的索引的映射 mappings building properties name type string flat parent type build
  • 用于连接多个表并在单行中获取逗号分隔值的 LINQ 查询

    我有下表的值 Account Id Name Email 101 Nasir Uddin email protected cdn cgi l email protection Role Id Title 101 Admin 102 Oper