LinQ操作List<>对象

转载于:http://www.cnblogs.com/shuibin/archive/2012/04/19/2457867.html

最近在项目中,刚好遇到这个需求,

需要比较两个List,进行一些交集等操作,

在以前我们可能需要写很多行來完成這些动作,

但现在我们只需要借由LinQ就能轻松达到目的!

※本文使用int为例,若为使用自定之DataModel,需實作IEquatable<T>介面才能使用

1.  取交集 (A和B都有)

List A : { 1 , 2 , 3 , 5 , 9 }

List B : { 4 , 3 , 9 }

1	var intersectedList = list1.Intersect(list2);

  結果 : { 3 , 9 }

判断A和B是否有交集

bool isIntersected = list1.Intersect(list2).Count() > 0

  

2. 取差集 (A有,B沒有)

List A : { 1 , 2 , 3 , 5 , 9 }

List B : { 4 , 3 , 9 }

var expectedList = list1.Except(list2);

  結果 : { 1 , 2 , 5 }

判断A和B是否有差集

bool isExpected = list1.Expect(list2).Count() > 0

  

3.  取并集(包含A和B)

List A : { 1 , 2 , 3 , 5 , 9 }

List B : { 4 , 3 , 9 }

public static class ListExtensions

{

    public static List<T>  Merge<T>(this List<T> source, List<T> target)
    {
        List<T> mergedList = new List<T>(source);
        mergedList.AddRange(target.Except(source));
       return mergedList;

    }   

}

var  mergedList = list1.Merge(list2);

  結果 : { 1 , 2 , 3 , 5 ,9 , 4 }

結語

使用Linq就可以轻松完成List的比对,

如果有任何问题欢迎大家一起讨论

转载于:http://www.cnblogs.com/liguanghui/archive/2011/11/09/2242309.html

在开发过程中.数组和集合的处理是最让我们担心.一般会用for or foreach 来处理一些操作.这里介绍一些常用的集合跟数组的操作函数.

首先举例2个集合A,B.

List<int> listA = new List<int> {1,2,3,5,7,9};

List<int> listB = new List<int> {13,4,17,29,2};

listA.AddRange(listB );把集合A.B合并

List<int> Result = listA.Union(listB).ToList<int>();          //剔除重复项

List<int> Result = listA.Concat(listB).ToList<int>();        //保留重复项

listA.BinarySearch("1");//判断集合中是否包含某个值.如果包含则返回0

在举例两个数组

int[] i=new int[]{1,2};

int[] j=new int[]{2,3};

List<int> r = new List<int>();

r.AddRange(i);

r.AddRange(j);

int[] c = r.ToArray(); 合并数组

int[] x=i.Union(j).ToArray<int>(); //剔除重复项

int[] x=i.Concat(j).ToArray<int>(); //保留重复项

int n = Array.BinarySearch(i,3);//判断数组中是否包含某个值.如果包含则返回0

时间: 2024-10-07 21:21:41

LinQ操作List<>对象的相关文章

8天掌握EF的Code First开发系列之3 管理数据库创建,填充种子数据以及LINQ操作详解

本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LINQ to Entities 使用LINQ to Entities操作实体 LINQ操作 懒加载和预加载 插入数据 更新数据 删除数据 本章小结 本人的实验环境是VS 2013 Update 5,windows 10,MSSQL Server 2008. 上一篇<Code First开发系列之领域建模和管理实体关系>,我们主要介绍了EF中“约定大于配置”的概念,如何创建数据

LinQ操作

一.LinQ to SQL LinQ是指集成化查询语言,通过映射将数据库内的表名变为C#的类名,将列名作为属性名,将表的关系作为类的成员对象.O--M--R O-Object对象 R-Relation关系 M-Mapping映射 LinQ包括:LinQ to SQL,针对SQL的查询,它是一个带有可视化的操作界面的ORM工具. LinQ to Object,用来实现对内存中集合对象的查询. LinQ to DataSet,对强类型化或弱类型化的DataSet或独立的DataTable进行查询.

.NET环境下,通过LINQ操作SQLite数据库

//对应数据库中的某个表 [Table(Name = "main.Student")]    public class Student    {        [Column(Name = "StuName", DbType = "varchar(50)")]        public string StuName { get; set; }        [Column(Name = "StuNo", DbType = &

在Action中操作域对象

----------------------siwuxie095 在 Action 中操作域对象 1.在 Action 中可以操作的域对象主要有三个: (1)Request (2)Session (3)ServletContext 「PageContext 域对象用于页面中,而非 Action 中」 2.使用 ServletActionContext 类进行操作 // 操作三个域对象 // (1) Request 对象 HttpServletRequest request=ServletActi

在struts2的action中操作域对象(request、session)

在struts2的Action中,操作域对象一共有三种方式: 1.ActionContext(与servelt API无关联): 1 //相当于request 2 ActionContext.getContext().put("userName", user.getUserName()); 3 //相当于session 4 ActionContext.getContext().getSession().put("userName", user.getUserName

直接操作游戏对象C#游戏开发

直接操作游戏对象C#游戏开发 2.2.3  直接操作游戏对象 在Inspector视图里通过设置属性而改变游戏场景中游戏对象的状态,太过抽象,毕竟数字并不够直观.其实,改变游戏对象的状态,完全有最最直观,最最简单的方法,那就是在Scene视图里,直接使用鼠标操作游戏对象直接操作游戏对象C#游戏开发本文选自C#游戏开发快速入门大学霸. 在Unity的左上角,有个工具栏,它显示了4个按钮,如图2-10所示.分别表示拖动Scene视图.改变游戏对象的位置.朝向和大小直接操作游戏对象C#游戏开发本文选自

Java操作Sqoop对象

Windows下使用Eclipse工具操作Sqoop1.4.6对象 Sqoop是用来在关系型数据库与Hadoop之间进行数据的导入导出,Windows下使用Eclipse工具操作时,需要先搭建好Hadoop的开发环境 参照Java操作HDFS对象的pom.xml配置,添加配置 <dependency> <groupId>org.apache.sqoop</groupId> <artifactId>sqoop</artifactId> <ve

[转]操作复杂对象结构——访问者模式

原地址:http://blog.csdn.net/lovelion/article/details/7433523 想必大家都去过医院,虽然没有人喜欢去医院(爱岗敬业的医务工作人员除外,).在医生开具处方单(药单)后,很多医院都存在如下处理流程:划价人员拿到处方单之后根据药品名称和数量计算总价,药房工作人员根据药品名称和数量准备药品,如图26-1所示: 在图26-1中,我们可以将处方单看成一个药品信息的集合,里面包含了一种或多种不同类型的药品信息,不同类型的工作人员(如划价人员和药房工作人员)在

ajax操作之操作 JavaScript 对象

通过请求获取充分格式化的HTML虽然很方便,但这也意味着必须在传输文本内容的同时也 传输很多HTML标签.有时候,我们希望能够尽量少传输一些数据,然后马上处理这些数据.在 这种情况,我们希望取得能够通过JavaScript进行遍历的数据结构.          使用jQueiy的选择符可以遍历和操作取得的HTML结构,但是还有一种JavaScript内置的数据 格式,既能减少数据传输量,也会减少编码量.1.取得JSON         前面我们曾经看到过,JavaScript对象是由一些“键-值