C#中使用LINQ和lambda实现左链接、右链接、内链接

这篇具有很好参考价值的文章主要介绍了C#中使用LINQ和lambda实现左链接、右链接、内链接。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C#中使用LINQ和lambda实现左链接、右链接、内链接

在 C# 中使用 LINQ 和 lambda 表达式可以实现左链接(Left Join)、右链接(Right Join)和内链接(Inner Join)操作。这些链接操作是针对两个数据集合之间的关联查询,用于获取满足特定条件的匹配项。下面是使用 LINQ 和 lambda 表达式分别实现这些链接操作的示例:

假设我们有两个数据集合:orderscustomers,并且它们之间有一个共同的属性 CustomerId

  1. 左链接(Left Join):

左链接返回两个集合中的所有元素,并且还包括满足指定条件的匹配项。如果右侧的集合没有匹配项,将使用默认值表示。

var leftJoinQuery = from customer in customers
                    join order in orders on customer.CustomerId equals order.CustomerId into customerOrders
                    from co in customerOrders.DefaultIfEmpty()
                    select new { customer.CustomerName, OrderId = co?.OrderId ?? 0 };

使用 Lambda 表达式:

var leftJoinQuery = customers.GroupJoin(
    orders,
    customer => customer.CustomerId,
    order => order.CustomerId,
    (customer, customerOrders) => new
    {
        customer.CustomerName,
        OrderId = customerOrders.Select(co => co?.OrderId ?? 0).FirstOrDefault()
    }
);
  1. 右链接(Right Join):

右链接返回两个集合中的所有元素,并且还包括满足指定条件的匹配项。如果左侧的集合没有匹配项,将使用默认值表示。

var rightJoinQuery = from order in orders
                     join customer in customers on order.CustomerId equals customer.CustomerId into orderCustomers
                     from oc in orderCustomers.DefaultIfEmpty()
                     select new { CustomerName = oc?.CustomerName ?? "N/A", order.OrderId };

使用 Lambda 表达式:

var rightJoinQuery = orders.GroupJoin(
    customers,
    order => order.CustomerId,
    customer => customer.CustomerId,
    (order, orderCustomers) => new
    {
        CustomerName = orderCustomers.Select(oc => oc?.CustomerName ?? "N/A").FirstOrDefault(),
        order.OrderId
    }
);
  1. 内链接(Inner Join):

内链接返回两个集合中满足指定条件的匹配项。

var innerJoinQuery = from order in orders
                     join customer in customers on order.CustomerId equals customer.CustomerId
                     select new { customer.CustomerName, order.OrderId };

使用 Lambda 表达式:

var innerJoinQuery = orders.Join(
    customers,
    order => order.CustomerId,
    customer => customer.CustomerId,
    (order, customer) => new { customer.CustomerName, order.OrderId }
);

以上是使用 LINQ 和 lambda 表达式实现左链接、右链接和内链接操作的示例。通过掌握这些查询技巧,你可以更灵活地处理数据集合之间的关联查询。文章来源地址https://www.toymoban.com/news/detail-605257.html

到了这里,关于C#中使用LINQ和lambda实现左链接、右链接、内链接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 每个.NET开发都应掌握的linq知识点

    LINQ是C#3.0引入的特性,让处理对象就像执行SQL语句一样简单,对于提高C#开发效率有革命性的作用。 对于每个.NET开发者来说,掌握C#的LINQ知识点是非常重要的。LINQ是C#的一个强大的特性,它为数据查询和操作提供了简洁、统一的语法,使得数据处理变得更加直观和灵活。 以

    2024年02月14日
    浏览(50)
  • C# .Net Core log4net 使用方法

    一、背景 前排提示,觉得墨迹的朋友可以直接看解决方法部分! 啊,许久没有这般耗时耗力了。。。鼓捣了一下午,不断地查阅资料,终于成功把log4net配置成功了。不过,笔者对log4net的底层并不了解,这里只是简单记录学习过程,给同样的初学者提供些许方便。 二、探索

    2024年02月04日
    浏览(43)
  • .NET Core(C#)使用Titanium.Web.Proxy实现Http(s)代理服务器监控HTTP请求

    关于Titanium.Web.Proxy详细信息可以去这里仔细看看,这里只记录简单用法 NuGet直接获取Titanium.Web.Proxy 配置 与其说是配置,不如就说这一部分就是未来你需要使用的部分,想知道具体每个部分是干什么的就去看原文链接 全放过来太占地方 最后的 Console.Read(); 是一个等待函数,你

    2024年02月09日
    浏览(58)
  • C#,ASP.NET委托的使用

    【注释】: 1.【声明委托】:想调用哪里的委托就在哪里声明(第一步) 2.【委托的调用】在哪里使用,就在哪里定义委托(第三步) 3. 委托变量 和 具体方法的关联,通常是分开的(第四步) (这里是Form2调用Form1的函数)访问链接:C#跨窗体调用控件(委托回调函数使用例

    2024年02月11日
    浏览(42)
  • 【C#】.Net Framework框架使用JWT

    2023年,第31周,第2篇文章。给自己一个目标,然后坚持总会有收货,不信你试试! 本篇文章主要简单讲讲,.Net Framework框架下使用JWT的代码例子,以及他们的基本概念。 2002年微软发布了.net framework 1.0,那个时候博主刚开始玩传奇游戏,接触电脑的时间还是挺早的。 JWT(JS

    2024年02月15日
    浏览(57)
  • C#使用.Net Core进行跨平台开发

    使用 .NET Core 进行跨平台开发是一种灵活的方法,可以在多个操作系统上运行 C# 应用程序。以下是在 C# 中使用 .NET Core 进行跨平台开发的一般步骤: 安装 .NET Core SDK : 在开始之前,需要安装适用于操作系统的 .NET Core SDK。可以从官方网站(https://dotnet.microsoft.com/download)下载

    2024年02月11日
    浏览(60)
  • 【C#】.net core 6.0 使用第三方日志插件Log4net,配置文件详细说明

    欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。 温馨提示:博主能力有限,理解水平有限

    2024年04月12日
    浏览(52)
  • c# Log4net使用介绍

    注意:将log4net.config的属性“复制到输出目录”设置为“始终复制” Log4net 是一个用于 .NET 平台的日志记录框架,它可以帮助开发者在应用程序中记录和管理日志信息,以便于调试和监控应用程序的运行情况。下面是 Log4net 的配置和使用过程及案例: 安装 log4net 可以通过 Nu

    2024年02月02日
    浏览(77)
  • 【C#】.Net Framework框架下使用SQLike以及基本概念

    2023年,第32周,第2篇文章。给自己一个目标,然后坚持总会有收货,不信你试试! 在C#的.NET Framework框架下,有很多轻量级数据库选择,比如:SQLike就是其中一款,一起来了解SQLike的简单使用吧。 轻量级数据库是指具有较小的存储需求、资源消耗较低、易于部署和使用的数据

    2024年02月11日
    浏览(79)
  • C#使用Asp.Net创建Web Service接口并调用

    目录 一.创建Asp.net web应用以及Web Service服务 (1).运行环境 (2)创建项目 二.创建控制台应用来调用上面创建的Web Service 开发工具: Visual Studio 2022 Current (免费社区版) 框架版本: .net framework4.7.2,更高的.net 5 、net6貌似没有默认提供带web service的asp.net 应用模板了。 确保VS的工作负荷有

    2024年01月18日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包