List集合之间的连接

之前学习数据库的时候总结过数据库中表和表之间的连接数据库中多表的连接,现在做的项目需要要调用其他系统WCF服务返回List集合,从自己系统再返回一部分集合,将这两种集合链接起来再将“连接的集合‘返回到界面。

通过查阅资料,有两种方法可以实现List集合之间的连接:一种是利用Linq语句,另外一种是利用lamda表达式,现在总结一下:

数据实体:

    /// <summary>
    /// 考试实体
    /// </summary>
    public class Exam
    {
        public string ExamId { get; set; }
        public string ExamName { get; set; }
    }
    /// <summary>
    /// 考生实体
    /// </summary>
    public class Examinee
    {
        public string ExamineeId { get; set; }
        public string ExamineeName { get; set; }
        public string ExamId { get; set; }
    }

向实体集合中添加数据:

            //考试实体集合数据
            List<Exam> examList=new List<Exam>()
            {
                new Exam(){ExamId ="ks001",ExamName = "数学考试"},
                new Exam(){ExamId ="ks002",ExamName = "语文考试"},
                new Exam(){ExamId ="ks003",ExamName = "英语考试"},
            };

            //考生实体集合数据
            List<Examinee> examineeList = new List<Examinee>()
            {
                new Examinee(){ExamineeId = "xs1001",ExamineeName="小明",ExamId ="ks001",},
                new Examinee(){ExamineeId = "xs1002",ExamineeName="小张",ExamId ="ks001",},
                new Examinee(){ExamineeId = "xs1003",ExamineeName="小李",ExamId ="ks002",},
            };

利用Linq语句

            var joinList = from examEtity in examList
                join examineeEntity in examineeList
                    on examEtity.ExamId equals examineeEntity.ExamId
                select new
                {
                    考试ID=examEtity.ExamId,
                    考试名称=examEtity.ExamName,
                    考生ID=examineeEntity.ExamineeId,
                    考生名称 = examineeEntity.ExamineeName
                };

            dataGridView1.DataSource = joinList.ToList();

显示截图:

利用lamda表达式

            var joinList = examList.Join(examineeList,examEntity=>examEntity.ExamId,
                examineeEntity => examineeEntity.ExamId, (examEntity,examineeEntity)=>
                new
                {
                    考试ID = examEntity.ExamId,
                    考试名称 = examEntity.ExamName,
                    考生ID = examineeEntity.ExamineeId,
                    考生名称 = examineeEntity.ExamineeName
                }); 

            dataGridView1.DataSource = joinList.ToList();

显示截图:

总结:

这两种方式只是对于两个数据集合的内连接操作,还有左右连接、分组连接等等。那些还需要进一步的学习。

源码地址:http://download.csdn.net/detail/suneqing/8307283

时间: 2024-11-14 03:43:43

List集合之间的连接的相关文章

Docker学习笔记(9-2)Docker容器之间的连接

学习目标: 容器之间的连接 准备工作 FROM ubuntu:14.04 RUN apt-get install -y ping RUN apt-get update RUN apt-get install -y nginx RUN pat-get install -y curl EXPOSE 80 CMD /bin/bash #构建测试镜像 docker build -t lexiaofei/cct . 1.允许所有容器互联 --icc=true 默认 $ docker run -it --n

创建数据库之间的连接

数据库之间的连接:(db_link) 通过一台数据库查询另一台数据的数据 服务端: 开启监听 开启数据库fsdb 使用测试数据:system.xxx 表 客户端: 创建:tnsnames.ora  #tns 名字p1 登录到本地一台数据库(非fsdb) 创建db_link: create database link fsdb_link connect to system identified by oracle using 'p1'; #create database link db_link的

浅谈Oracle表之间各种连接

Oracle表之间的连接分为三种: 1.内连接(自然连接) 2.外连接 2.1.左外连接(左边的表不加限制,查询出全部满足条件的结果) 2.2.右外连接(右边的表不加限制,查询出全部满足条件的结果) 2.3.全外连接(左右两边表均不加限制) 3.自连接(同一张表内的连接) SQL的标准写法: select table1.column,table2.column from table1 [inner|left|right|full] join table2 on table1.column1 =

oracle表之间的连接之-----&gt;哈希连接(Hash Join)

哈希连接(HASH JOIN)是一种两个表在做表连接时主要依靠哈希运算来得到连接结果集的表连接方法. 对于排序合并连接,如果两个表在施加了目标SQL中指定的谓词条件后得到的结果集很大而且需要排序,则排序合并连接的执行效率一定不高:而对于嵌套循环连接,如果驱动表所对应的驱动结果集的记录数很大,即便在被驱动表的连接列上存在索引,此时使用嵌套循环连接的执行效率也会同样不高.为了解决这个问题,于是ORACLE引进了哈希连接.在ORACLE 10g及其以后的版本中,优化器 (实际上是CBO,因为哈希连接仅

oracle表之间的连接之------&gt;排序合并连接(Merge Sort Join)

排序合并连接 (Sort Merge Join)是一种两个表在做连接时用排序操作(Sort)和合并操作(Merge)来得到连接结果集的连接方法. 对于排序合并连接的优缺点及适用场景如下: a,通常情况下,排序合并连接的执行效率远不如哈希连接,但前者的使用范围更广,因为哈希连接只能用于等值连接条件,而排序合并连接还能用于其他连接条件(如<,<=,>.>=) b,通常情况下,排序合并连接并不适合OLTP类型的系统,其本质原因是对于因为OLTP类型系统而言,排序是非常昂贵的操作,当然,如

erlang与c之间的连接

http://blog.chinaunix.net/uid-22566367-id-382012.html erlang与c之间的连接参考资料:网络资料作者:Sunny    在Programming Erlang书上的第十二章中实现了elang与c语言之间的连接,本人觉得那个例子还是有点复杂,在此,本人举一个更简单的例子.而且在那本书上的Page 161第7行,有一个错误.书上写的是:    Port ! {PidC, {connect, Pid1}}    把端口连接进程PID从Pid1改为

Docker使用Link在容器之间建立连接

原文链接:Docker使用Link在容器之间建立连接 在使用Docker的时候我们会常常碰到这么一种应用,就是我需要两个或多个容器,其中某些容器需要使用另外一些容器提供的服务.比如这么一种情况:我们需要一个容器来提供mysql的数据库服务,而另外两个容器作为客户端来连接使用mysql数据库服务.下面我们就来看看Docker是怎样通过Link来实现这种功能的. 1. 这里我们首先创建两个容器image,一个用来模拟mysql数据库,另外一个使用mysql的client来模拟一些使用mysql服务的

java集合之间的关系及实现细节——Set与Map

   首先,先谈一下Set和Map的一些特性及体系结构: 1.1 Set和Map Set代表一种无序的.元素不可重复的集合.Map则代表是一种key-value对组成的集合,Map集合类似于传统的关联数组.表面上看它们之间的关系的相似性很少,实则Map和Set之间有着莫大的关联,可以这样说Map集合实则是Set集合的扩展. 至于为什么是Set是一种无序的.元素不可重复的集合:Map集合类似传统的关系数组.理解这个非常重要,这个我在后面会进行补充说明. 1.2 Set和Map之间的关系 先看看Se

Socket编程——怎么实现一个服务器多个客户端之间的连接

  1 package coreBookSocket; 2 3 import java.io.IOException; 4 import java.net.ServerSocket; 5 import java.net.Socket; 6 7 /* 8 * 这个方法的主要目地是为了用多线程的方法实现网络编程,让多个客户端可以同时连接到一个服务器 9 *1:准备工作和单个客户端编程类似,先建立服务器端的套接字,同时让客户端那边调用accept()方法来接受服务器端的信息 10 *2:这里面定一个w