首页 > 后端开发 > C++ > 如何在没有```of-on-equals-into)子句中执行LINQ中的外部连接?

如何在没有```of-on-equals-into)子句中执行LINQ中的外部连接?

Patricia Arquette
发布: 2025-02-02 14:31:09
原创
907 人浏览过

How to Perform Left Outer Joins in LINQ without `join-on-equals-into` Clauses?

在LINQ中无需join-on-equals-into子句执行左外部联接

在C# LINQ to objects中,可以使用DefaultIfEmpty()方法执行不使用join-on-equals-into子句的左外部联接。

左外部联接的解决方案

要使用Where子句执行左外部联接,请修改代码如下:

<code class="language-csharp">List<joinpair> leftFinal = (from l in lefts
                             join r in rights on l.Key equals r.Key into temp
                             from r in temp.DefaultIfEmpty()
                             select new JoinPair { LeftId = l.Id, RightId = r == null ? 0 : r.Id });</code>
登录后复制

说明

DefaultIfEmpty()方法如果联接条件不匹配,则返回正在联接的集合类型的默认值(在本例中为JoinPair)。这确保了左表(lefts)中的所有行都包含在结果中,即使右表(rights)中没有匹配的行。

示例

考虑为内部联接提供的代码:

<code class="language-csharp">List<joinpair> innerFinal = (from l in lefts
                             from r in rights
                             where l.Key == r.Key
                             select new JoinPair { LeftId = l.Id, RightId = r.Id });</code>
登录后复制

要实现左外部联接,请将Where子句替换为以下内容:

<code class="language-csharp">join r in rights on l.Key equals r.Key into temp
from r in temp.DefaultIfEmpty()</code>
登录后复制

此修改将确保左表lefts中的所有行都包含在结果中,包括在右表rights中没有匹配行的那些行。

以上是如何在没有```of-on-equals-into)子句中执行LINQ中的外部连接?的详细内容。更多信息请关注PHP中文网其他相关文章!

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