Linq 完全外连接与数据表中的 NULL 记录 C#

2024-01-11

请问有人可以帮忙吗?我需要在 Extn_In_Call_Records = Extn_Number 上返回一个表,如果任一侧不匹配,仍然返回一个计算,就像 SQL 完全外连接一样。我花了几个小时看这个,但无法让它工作!如果删除联合,我可以让代码在下面工作,但它只返回匹配的结果。数据表是从 MYSQL 填充的。任何帮助都会很棒。

            //Full Table
        DataTable fullext = new DataTable();
        fullext.Columns.Add("Extn_In_Call_Records", typeof(string));
        fullext.Columns.Add("Total_Calls", typeof(int));
        fullext.Columns.Add("Extn_Number", typeof(string));
        fullext.Columns.Add("Phys_Switch_Name", typeof(string));


        //End Full Table


        try
         {

            //Full Result


             var result = from callrc in callrecdt.AsEnumerable()
                          join physex in physextns.AsEnumerable()
                          on callrc["Extn_In_Call_Records"] equals physex["Extn_Number"]
                           .Union
                          from physex in physextns.AsEnumerable()
                          join callrc in callrecdt.AsEnumerable()
                          on physex["Extn_Number"] equals callrc["Extn_In_Call_Records"] 



                          select fullext.LoadDataRow(new object[] {
                       callrc["Extn_In_Call_Records"],
                       callrc["Total_Calls"],
                       physex["Extn_Number"] == null ? "" : physex["Extn_Number"],
                       physex["Phys_Switch_Name"] == null ? "" : physex["Phys_Switch_Name"]
                       }, false);
             result.CopyToDataTable();
             fullresult.DataSource = fullext;

结果可见

Extn_In_Call_Records    Total_Calls   Extn_Number      Phys_Switch_Name
null                    20                0                Hospital
null                    310               1                Hospital
4                       132               4                Hospital
2004                    null                null           Hospital
2006                    2               2006           Hospital

Per LINQ - 完全外连接 https://stackoverflow.com/questions/5489987/linq-full-outer-join,执行完整外连接的最简单方法是合并两个左连接。 LINQ 中的左连接(使用扩展方法语法)采用以下形式:

var leftJoined = from left in lefts
                 join right in rights
                   on left.Key equals right.Key
                 into temp
                 from newRight in temp.DefaultIfEmpty(/* default value for right */)
                 select new
                 {
                     /* use left and newRight to construct the joined object */
                 }

就您而言,您想要执行以下操作:

// initialize some default elements to use later if
// they're of the same type then a single default is fine
var defaultPhysex = new {...};
var defaultCallrc = new {...};

var left = from callrc in callrecdt.AsEnumerable()
           join physex in physextns.AsEnumerable()
             on callrc["Extn_In_Call_Records"] equals physx["Extn_Number"]
           into temp
           from physex in temp.DefaultIfEmpty(defaultPhysex)
           select new 
           {
               // callrc is accessible here, as is the new physex
               Field1 = ...,
               Field2 = ...,
           }

var right = from physex in physextns.AsEnumerable()
            join callrc in callrecdt.AsEnumerable()
              on callrc["Extn_In_Call_Records"] equals physx["Extn_Number"]
            into temp
            from callrc in temp.DefaultIfEmpty(defaultCallrc)
            select new 
            {
                // physex is accessible here, as is the new callrc
                Field1 = ...,
                Field2 = ...,
            }

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

Linq 完全外连接与数据表中的 NULL 记录 C# 的相关文章

随机推荐

  • 太阳黑子返回模型的所有结果

    我的控制器中有这样的 def boards user User find by slug params id search user boards solr search do s s fulltext params search s ke
  • 下划线渲染 [对象 HTMLDivElement]

    我有一个下划线模板 附加以下文本 对象 HTMLDivElement 但它应该附加 model get title 返回的值 这是我的模板 这是我的功能 addTodoLi function model var todoData model
  • Tensorflow 错误:“无法从原型解析张量”

    我正在用张量流创建一个深度 CNN 我已经创建了架构 现在正在进行培训 当我开始训练模型时 我使用以下命令 sess run tf global variables initializer 当调用此命令时 我收到以下错误 我的直觉告诉我 张
  • SimpleXML - 使用先前声明的命名空间添加新节点 - 如何?

    我想在一个非常具体的地方添加一个孩子 所以我也使用 DOM 而不仅仅是 simpleXML
  • HBASE SPARK 带过滤器的查询,无需加载所有 hbase

    我必须查询 HBASE 然后使用 Spark 和 scala 处理数据 我的问题是 通过我的解决方案 我获取 HBASE 表的所有数据 然后进行过滤 这不是一种有效的方法 因为它占用了太多内存 所以我想直接做过滤器 我该怎么做 def Hb
  • 如何在 Laravel 控制台上打印消息?

    运行 php artisanserve 时 laravel 如何在控制台上打印一些字符串 我试过Log info但它不起作用 这很简单 您可以在APP中的任何地方调用它 out new Symfony Component Console O
  • 想要在jsp页面中动态填充文本框

    想要使用 jsp 页面创建一个应用程序 以便它从文本框中的用户处获取一个值 并根据该值从数据库中检索其他值 并用检索到的值填充其他文本框 创建一个 HTML 表单并将其放入search jsp
  • GKE 对于小型 Node.js 应用程序 Pod 来说 CPU 不足

    所以在 GKE 上我有一个 Node jsapp每个 pod 使用以下内容 CPU cores 5m MEMORY 100Mi 但是我只能在每个节点部署 1 个 pod 我正在使用 GKEn1 standard 1簇有1 vCPU 3 75
  • 如何使用 GitHub 操作替换表达式中的字符串

    这是我返回的动作 TOXENV看起来像这样py3 6 django2 2我想 TOXENV看起来像这样py36 django22有没有我可以用来替换的替代 替换功能 char name CI on workflow dispatch bra
  • 如何计算spark中DataFrame中列的百分位数?

    我正在尝试计算 DataFrame 中列的百分位数 我在 Spark 聚合函数中找不到任何percentile approx 函数 例如在Hive中我们有percentile approx 我们可以通过以下方式使用它 hiveContext
  • 图像色彩饱和度

    我试图找到一种饱和函数形式 但没有找到任何东西 这不可能那么难 但我所有的猜测看起来都不太正确 去饱和的方向似乎更容易 我有 RGB 格式的图像像素数据 最终图像也应该是 RGB 格式 那么 这些函数是如何定义的 r n saturatio
  • AS3:文本字段焦点

    我正在尝试处理 TextField 上的焦点事件 以便在聚焦 选项卡或单击 时可以选择所有文本 看来我在这里做错了什么 txtTextField addEventListener FocusEvent FOCUS IN handleFocu
  • 将文本颜色和提示文本颜色设置为SearchView中的文本

    我想将文本颜色和提示文本颜色设置为 android support v7 widget SearchView 中的文本 该文本不在 ActionBar 中 也不在 Menu 选项中 我尝试了 stackoverflow 中提到的几种方法 但
  • 如何获取Linux上的非系统用户列表?

    考虑到所有用户id gt 1000是非系统用户 我们如何在单个命令中获取这些用户的列表 您需要获取所有用户gid大于或等于 1000 使用此命令 awk F 3 gt 1000 1 nobody print 1 etc passwd 如果你
  • Angular:vscode 中预期的表达式

    当我保存文件时 vscode 自动滚动到该随机行并指向 给出这个错误 我只是检查是否dateToComplete is null因为有时需要 我是否需要禁用 ts 的某些新功能 if this editMode this dateToCom
  • 为什么在 Selenium 中使用 add_experimental_option ?

    我试图理解与以下内容非常相似的代码片段 from selenium webdriver chrome options import Options chrome options Options port number 127 0 0 1 8
  • (Vue,ChartJS)从子组件画布上下文为图表创建渐变背景

    我想为我的图表提供渐变背景颜色 但我无法访问画布上下文 因为我的图表在我编写的包装器组件中呈现 What I want to achieve 我的实际包装看起来像这样
  • 使用 Java 解密由 .NET 的 RijndaelManaged 加密的字节

    我正在尝试解密一些东西 它是使用 NET C 的 RijndaelManaged 加密的 使用 Java 解密 C 程序不是我的 我无法将其更改为更具互操作性 但我知道它是如何加密的 byte bytes new UnicodeEncodi
  • 如何验证Java线程堆栈大小是否固定或有限?

    我试图验证 Java 堆栈大小是否固定 在开始时设置 或有限 增长到一定限制 我试图用一个简单的程序来测量这一点 该程序创建一定数量的线程 设置 Xss 但到目前为止我只发现 RSS 是每个进程的 并且出于明显的原因 知道堆大小在这里毫无意
  • Linq 完全外连接与数据表中的 NULL 记录 C#

    请问有人可以帮忙吗 我需要在 Extn In Call Records Extn Number 上返回一个表 如果任一侧不匹配 仍然返回一个计算 就像 SQL 完全外连接一样 我花了几个小时看这个 但无法让它工作 如果删除联合 我可以让代码