两个对象上的 Linq 完全外连接

2024-03-03

我有两个名为 CountryMobility 的对象,我相信我需要将它们与完整的外部联接结合起来。我该如何使用 linq 来做到这一点?

public class CountryMobility
{
    public string countryCode { get; set; }
    public int inbound { get; set; }
    public int outbound { get; set; }
} 

我想像这样组合其中两个对象:

inboundStudents:
countryCode | inbound | outbound
         EG |    2    |     0
         CA |    3    |     0
         CH |    5    |     0

outboundStudents:
countryCode | inbound | outbound
         PE |    0    |     1
         CA |    0    |     4
         CH |    0    |     5


                      -
                      -
                      -
                      -
                      V

combinedStudents:
countryCode | inbound | outbound
         PE |    0    |     1
         CA |    3    |     4
         CH |    5    |     5
         EG |    2    |     0

我已尝试以下 linq 语句,但无法找出正确的语法。我目前在附近遇到语法错误 两个语句中都有 temp.DefaultIfEmpty(new {first.ID, inbound = 0, outbound=0 }) 。

var leftOuterJoin = 
    from first in inboundActivities
    join last in outboundActivities
    on first.countryCode equals last.countryCode
    into temp
    from last in temp.DefaultIfEmpty
    (new { first.countryCode, inbound = 0, outbound=0 })
    select new CountryMobility
    {
        countryCode = first.countryCode,
        inbound = first.inbound,
        outbound = last.outbound,
    };
var rightOuterJoin = 
    from last in outboundActivities
    join first in inboundActivities
    on last.countryCode equals first.countryCode
    into temp
    from first in temp.DefaultIfEmpty
    (new { last.countryCode, inbound = 0, outbound = 0 })
    select new CountryMobility
    {
        countryCode = last.countryCode,
        inbound = first.inbound,
        outbound = last.outbound,
    };

var fullOuterJoin = leftOuterJoin.Union(rightOuterJoin); 

在您的最新信息之后。在我看来,你可以做一些更简单的事情。即一个UNION ALL您随后可以按国家/地区代码进行分组。 AUNION ALL可以使用创建Concat method.

下面的示例对我有用(在内存集合中使用)。查询显示在Run method.

public class CountryMobility
{
    public string countryCode { get; set; }
    public int inbound { get; set; }
    public int outbound { get; set; }
}

public static class JoinedMobilityQuery
{
    static CountryMobility[] inbound = {
        new CountryMobility() { countryCode = "EG", inbound = 2 },
        new CountryMobility() { countryCode = "CA", inbound = 3 },
        new CountryMobility() { countryCode = "CH", inbound = 5 },
    };
    static CountryMobility[] outbound = {
        new CountryMobility() { countryCode = "PE", outbound = 1 },
        new CountryMobility() { countryCode = "CA", outbound = 4 },
        new CountryMobility() { countryCode = "CH", outbound = 6 },
    };

    static IQueryable<CountryMobility> Inbound()
    {
        return inbound.AsQueryable();
    }

    static IQueryable<CountryMobility> Outbound()
    {
        return outbound.AsQueryable();
    }

    public static void Run()
    {
        var transfers = from t in Inbound().Concat(Outbound())
                        group t by t.countryCode into g
                        select new CountryMobility() {
                            countryCode = g.Key,
                            inbound = g.Sum(x => x.inbound),
                            outbound = g.Sum(x => x.outbound),
                        };
        foreach (var transfer in transfers)
            Console.WriteLine("{0}\t{1}\t{2}", transfer.countryCode, transfer.inbound, transfer.outbound);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

两个对象上的 Linq 完全外连接 的相关文章

  • CMake 和 Visual Studio:如何获得快速、安静的命令行构建?

    我有一个 cmake 项目 它成功地完成了我想要的一切 但我有大约 100 个文件 当我只需要重新编译一个文件时 我厌倦了每次看到生成的巨大输出 每个文件 30 行 明确地说 我正在编译cmake build 得到这个结果 我需要传递给编译
  • 泛型与接口的实际优势

    在这种情况下 使用泛型与接口的实际优势是什么 void MyMethod IFoo f void MyMethod
  • 避免集合已修改错误

    Issue 我有以下代码 foreach var ItemA in GenericListInstanceB ItemA MethodThatCouldRemoveAnyItemInGenericListInstanceB 显然我得到一个错
  • 使用 SQL 确定子网掩码的 cidr 值

    我想找到一种方法来执行 SQL 查询 该查询将计算存储在数据库中的子网掩码的 cidr 位表示 例如 我在数据库中存储了 255 255 255 0 或其十进制值 4294967040 我想通过查询进行选择并返回 24 表示 我已经执行了类
  • 具有多重继承的类的 sizeof

    首先 我知道 sizeof 取决于机器和编译器的实现 我使用的是 Windows 8 1 x64 gcc 5 3 0 没有标志传递给编译器 我从大学讲座中得到了以下代码 include
  • 替换 JSON 中的转义字符

    我想用空格替换 JSON 字符串中的 字符 我怎样才能做到这一点 我发现从 JSON 字符串中删除所有转义字符的最简单 最好的方法是将字符串传递到正则表达式 Unescape 方法 此方法返回一个没有转义字符的新字符串 甚至删除了 n t
  • 如何附加到 xml

    我有这个xml
  • 在不使用 Thread.Sleep c# 的情况下延迟发送电子邮件

    我有一个 for 循环 它循环并每个循环发送一封电子邮件 现在我正在使用 thread sleep 但我希望用户仍然能够与程序交互 只需取消该循环即可 是否可以在不使用 thread sleep 的情况下做到这一点 您是否在 UI 线程上运
  • .Net Core 中的脚手架以及解决方案中的多个项目

    我创建了一个针对 net461 的 Net Core MVC6 应用程序 我使用了一个我非常熟悉的项目结构 其中我将数据 模型和服务类放置在单独的类库项目中 并且 Web 项目引用这些项目 当我尝试搭建控制器时 我收到一条错误 指出我正在搭
  • 无法将方法组“Read”转换为非委托类型“bool”

    我正在尝试使用SqlDataReader检查条目是否存在 如果存在则返回ID 否则返回false 当我尝试编译时 出现错误 无法将方法组 Read 转换为非委托类型 bool 我一直在遵循在 VB 中找到的示例 但似乎翻译可能不正确 pri
  • Qt:将拖放委托给子级的最佳方式

    我在 QWidget 上使用拖放 我重新实现了 DragEnterEvent dragLeaveEvent dragMoveEvent 和 dropEvent 效果很好 在我的 QWidget 中 我有其他 QWidget 子级 我希望它们
  • 列的 SQL MAX(包括其主键)

    Short 从下面的 sql select 中 我获取了 cart id 和该购物车中最高价值商品的值 SELECT CartItems cart id MAX ItemValues value FROM CartItems INNER J
  • C 中什么函数可以替换字符串中的子字符串?

    给定一个 char 字符串 我想查找所有出现的子字符串并将其替换为备用字符串 我没有看到任何简单的函数可以实现这一点
  • 当我耗尽 bigint 生成的密钥时会发生什么?怎么处理呢?

    我自己无法想象一个好的答案 所以我想在这里问 在我心里 我总是想知道 如果AUTO INCREMENT PRIMARY ID我的专栏MySQL表用完了吗 举例来说 我有一个有两列的表 一个ID auto increment primary
  • 如果不存在则插入数据(来自 2 个表),否则更新

    再会 我有3张桌子 tbl仓库产品 ProductID ProductName ProductCode Quantity tbl分公司产品 ProductID ProductCode ProductCode Quantity Locatio
  • 如何使用简历实现一个“一网打尽”的异常处理程序?

    我想知道我怎样才能写一个抓住他们全部应用程序级别的异常处理程序将为用户提供恢复应用程序流程的选项 如果您正在运行 Windows 窗体应用程序 将处理程序添加到Application ThreadException event
  • 实体框架代理创建

    我们可以通过使用来停止在上下文构造函数中创建代理 this Configuration ProxyCreationEnabled false 在 EF 4 1 中创建代理有哪些优点和缺点 代理对于两个功能是必需的 延迟加载 导航属性在第一次
  • 为什么 Dictionary 上的这个 Linq 查询不作为数据源工作

    我在VB中有以下内容 Dim sources From source In importSources Select New With Type source Key Source source Value Name dgridSource
  • FakeItEasy 代理方法调用实际实现

    我正在尝试将对假对象的调用代理到实际的实现 这样做的原因是我希望能够使用 Machine Specifications 的 WasToldTo 和 WhenToldTo 它们仅适用于接口类型的伪造 因此 我正在执行以下操作来代理对我的真实对
  • 什么时候使用静态库需要头文件?

    如果我在 Linux 中用 C 创建一个静态库并生成 a 文件 我 或其他人 如何使用该库 例如 我的库定义了一个类 我认为仅仅提供 a 文件是不够的 还需要提供头文件 我如何知道 a 文件必须提供哪些头文件 例如 我是否需要提供我的库代码

随机推荐

  • prolog 如何使用 succ 运行递归查询?

    有人可以向我解释一下为什么这个序言查询会这样工作吗 定义是 add 0 Y Y add succ X Y succ Z add X Y Z 鉴于这种 add succ succ succ 0 succ succ 0 R 这是查询的轨迹 Ca
  • 如何根据数据属性内对象的属性选择元素?

    如果我的标记如下所示 div div div div div div 如果我只有键 bar 或 foo 我将如何使用 JQuery 选择特定元素 我可以取出每一行的整个对象并迭代它以查找匹配项 但如果有更有
  • Pdfplumber 无法识别表 python [重复]

    这个问题在这里已经有答案了 我使用 Pdfplumber 提取第 2 页第 3 部分的表格 通常 但它只适用于某些 pdf 其他则不起作用 对于失败的 pdf 文件 似乎 Pdfplumber 读取的是按钮表而不是我想要的表 我怎样才能拿到
  • Windows 如何更改或插入物理扇区到另一个文件中?

    我有 20 个文件 其中数据结构在 NTFS 中与 4k 扇区对齐 我想合并所有文件无需复制任何数据 目标是编写一种通过直接更改 NTFS 虚拟集群和物理集群来工作的插入 API 目标是从 50GB 块中获得大小为 1TB 的文件 而无需复
  • 将值传递给 Sql 中的空值列

    我有一个Sections表 在该表中我有列SectionId CourseId Name Capacity 这里CourseId是一个空值列 它的外键在这里聚焦于Course表 这个CourseId列是一个新添加了一个 我正在尝试向此表添加
  • 关闭 SVG 标签,显式关闭还是自动关闭?

    我正在验证我的代码 并收到以下错误Tag cannot be self closing Use an explicit closing tag 在 IE 中作为我的 svg 路径 因为它是自动关闭的
  • 时髦的 haskell 惰性列表隐式递归

    在 Haskell 中 由于懒惰 您可以构建无限列表 Prelude gt let g 4 g Prelude gt g 0 4 Prelude gt take 10 g 4 4 4 4 4 4 4 4 4 4 现在 当我尝试构建这样的列表
  • python 中的无循环 3D 矩阵乘法

    我希望在 python numpy 中执行以下操作 Matrix A is M x N x R Matrix B is N x 1 x R 矩阵乘法 AB C 其中 C 是 M x 1 x R 矩阵 本质上 A 的每个 M x N 层 其中
  • 了解 Perl 正则表达式修饰符 /m 和 /s [重复]

    这个问题在这里已经有答案了 我一直在阅读带有修饰符 s m 和 g 的 perl 正则表达式 我知道 g 是全局匹配 它将是贪婪搜索 但我对修饰符 s 和 m 感到困惑 谁能用代码示例解释 s 和 m 之间的区别 以展示它们有何不同 我尝试
  • 如何从 MVC 控制器在 debian linux 中打印 pdf

    AsP NET MVC 4 应用程序使用 Mono 在 Debian Squeeze Linux 中运行 控制器使用下面的代码从 html 创建 pdf 文件 如何将 pdf 文件打印到连接到服务器的三星打印机 有一些可执行文件可以用于此目
  • Select2 - formatNoMatches 上的链接

    我在用着Select2 http ivaynberg github com select2 来增强我的
  • 在 Python 中验证 HTML/RDFa

    编写可以验证 HTML 尤其是使用嵌入式 RDFa 的 python 模块的最佳方法是什么 我熟悉 validator w3 org 并且有兴趣编写一个执行类似功能的自定义验证器 但针对使用 RDFa 作为元素元数据的不同标准 有哪些值得查
  • (NextAuth) 类型错误:类型“{}”上不存在属性“会话”

    我在 NextJs 项目上使用 NextAuth 时收到错误 Type error Property session does not exist on type 我正在添加session按照此处的建议将属性添加到我的 app tsx 中
  • 四组设计模式如何融入 MVC 范式?

    我仔细考虑过设计模式一段时间以来 我刚刚开始考虑如何真正开始将其中一些更有意地融入到我的开发工作中 然而 我仍然对他们在本书开头对 MVC 的处理以及它与本书其余部分的关系感到困惑 我使用过的大多数框架 Spring Yii ASP NET
  • AWS Cognito - JavaScript 中的开发人员身份验证(浏览器)

    我在浏览器脚本中获取凭据时遇到问题 身份验证服务器返回 cognito identityId 和 cognito token 然后我设置了一个Cookie cookie cognitoidentityId cookie cognito to
  • 如何为弹跳球创建碰撞检测?

    我已经为三个沙滩球在屏幕上弹跳编写了一个动画 用Python 我现在希望它们全部碰撞并能够相互弹开 我非常感谢您能提供的任何帮助 import pygame import random import sys class Ball def i
  • 准备好使用移动应用程序的后端了吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 从 github 添加厨师食谱

    我使用以下命令从 opscode 网站下载了许多食谱 Knife Cookbook网站安装git例如 但是现在我想从 github 上的存储库下载一本说明书到我当前的说明书目录中 我该怎么做呢 我应该将存储库克隆到我的食谱目录中吗 谢谢你
  • 在 javax.scripting javascript 环境中导入地图

    我在 javax scripting 地图实现中看到一些奇怪的行为 在线示例显示example http java sun com developer technicalArticles J2SE Desktop scripting 添加到
  • 两个对象上的 Linq 完全外连接

    我有两个名为 CountryMobility 的对象 我相信我需要将它们与完整的外部联接结合起来 我该如何使用 linq 来做到这一点 public class CountryMobility public string countryCo