/*十有三博客*/
  • 首页
  • 关于本站
  • 网站地图
  • RSS订阅

C# List.Join方法

2014-08-13 十有三 2 浏览:4万+ .NET技术 C#

最近在研究C#泛型集合的时候发现了List.Join方法,这个方法与C#中的string.Join方法还有js中的join方法不一样,不是根据分隔符链接字符串,而是根据两个对象关联起来生成新的数据。

List.Join方法更像SQL 中的JOIN连接,该方法是根据两个泛型集合之间的关系,将这两个集合合并后获取新的集合。而SQL的JOIN 则是根据两个或多个表中的列之间的关系,从这些表中查询数据。(PS:具体可以参考微软官方MSDN的说明)

这是整理后的官方范例代码(代码在控制台应用程序中运行):

    /*宠物主人*/
    class Person
    {
        public string Name { get; set; }
    }
    /*宠物*/
    class Pet
    {
        public string Name { get; set; }
        public Person Owner { get; set; }
    }
    static void Main(string[] args)
    {
        /*宠物主人*/
        Person magnus = new Person { Name = "Hedlund, Magnus" };
        Person terry = new Person { Name = "Adams, Terry" };
        Person charlotte = new Person { Name = "Weiss, Charlotte" };

        /*宠物*/
        Pet barley = new Pet { Name = "Barley", Owner = terry };
        Pet boots = new Pet { Name = "Boots", Owner = terry };
        Pet whiskers = new Pet { Name = "Whiskers", Owner = charlotte };
        Pet daisy = new Pet { Name = "Daisy", Owner = magnus };

        /*宠物主人列表集合*/
        List<Person> people = new List<Person> { magnus, terry, charlotte };
        /*宠物列表集合*/
        List<Pet> pets = new List<Pet> { barley, boots, whiskers, daisy };

        /*          
         * Create a list of Person-Pet pairs where 
         * each element is an anonymous type that contains a
         * Pet's name and the name of the Person that owns the Pet.
         * 创建一个包含 "主人-宠物" 这样对应对象的列表
         * ,其中每个对象元素都是包含宠物名字和宠物主人名字的匿名类型
        */            
        var query = people.Join(pets, person => person, pet => pet.Owner
        , (person, pet) => new { OwnerName = person.Name, Pet = pet.Name });

        /*循环输出最终结果 格式:宠物主人名-宠物名*/
        foreach (var obj in query)
        {
            Console.WriteLine("{0} - {1}", obj.OwnerName, obj.Pet);
        }

        Console.ReadKey();
    }

最终控制台输出的结果如下:

输出结果

下面使用SQL语句JOIN连接查询,从而模拟出List.Join方法的同等效果,其中有Person和Pet这两张表,根据Pet宠物表的PID关联Person宠物主人表的ID。

Person表数据如下:

id Name
1 Hedlund, Magnus
2 Adams, Terry
3 Weiss, Charlotte

Pet表数据如下:

id Name pid
1 Daisy 1
2 Barley 2
3 Boots 2
4 Whiskers 3

查询语句如下:

SELECT P.Name+' - '+PT.Name AS '宠物主人 - 宠物名称'
FROM Person AS P JOIN Pet AS PT 
ON P.Id=PT.PID

查询结果如下:

宠物主人 - 宠物名称
Hedlund, Magnus - Daisy
Adams, Terry - Barley
Adams, Terry - Boots
Weiss, Charlotte - Whiskers

最终结果和上面使用List.Join方法获取的一模一样吧。


作者:十有三

出处:https://shiyousan.com/post/635434860251469582

版权声明:本文采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请声明出处或保留此段声明。


  • 上一篇: jquery ajax error函数和及其参数详细说明
  • 下一篇: JSON劫持漏洞(详细讲解利用JSON从而进行数据劫持的漏洞攻防策略)

相关文章
  • 解决IIS ASP.NET 网站发布后出现错误 Unable to connect to any of the specified MySQL hosts
  • 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值
  • C#解决IIS域名批量绑定
  • C#中如何排除/过滤/清空/删除掉字符串数组中的空字符串
  • 取消vs2013解决方案中单击打开项目文件的功能
  • 命名空间System.Web中不存在类型或命名空间名称“Mvc” 是否缺少程序集引用?

文章分类

.NET技术 123 数据库 24 Web前端 21 网站建设运维 37 操作系统与应用 66 程序猿日常 11 开发工具 12 其他随笔 13

文章标签

ASP.NET ASP.NET MVC C# CSS HTML IIS Javascript Linux MongoDB MySql SQL SQL Server Visual Studio Windows系统 版本控制系统 插件工具 服务器 搞笑娱乐 好文分享 软件应用 生活知识 手机问题 随笔 网络知识 网站设计优化 网站维护 养生保健 异常处理 硬件设备 游戏攻略

热门文章

  • IIS8如何安装和使用URL重写工具-URL Rewrite
  • 林蛋大与楚中天,朱肚皮与朱月坡
  • 解决IE11安装升级失败和在安装前需要更新的问题
  • Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件
  • VS重构重命名的快捷键

推荐文章

  • VS2017 签名时出错: 未能对 bin\Debug\app.publish\*.exe 签名。SignTool Error: No certificates were found
  • ASP.NET 在.aspx页面中使用<script runat="server"></script>标记
  • Visual Studio中的.suo(Solution User Options)文件
  • JavaScript isNaN() 函数
  • 解决向日葵远程控制软件Shift无法多选文本内容和代码的问题

友情链接

  • Passingwind的博客
  • 码友网

知识共享许可协议 CC BY-SA 4.0本站作品采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。
闽ICP备15003702号
闽公网安备 35020302035102号