当前位置:  编程技术>.net/c#/asp.net

c# list部分操作实现代码

    来源: 互联网  发布时间:2014-10-23

    本文导语:  C# Linq获取两个List或数组的差集交集 代码如下:List list1 = newList();list1.Add(1);list1.Add(2);list1.Add(3);List list2 = newList();list2.Add(3);list2.Add(4);list2.Add(5);//得到的结果是4,5 即减去了相同的元素。List list3 = list2.Except(list1).ToList();foreach(inti inl...

C# Linq获取两个List或数组的差集交集

代码如下:

List list1 = newList();
list1.Add(1);
list1.Add(2);
list1.Add(3);
List list2 = newList();
list2.Add(3);
list2.Add(4);
list2.Add(5);
//得到的结果是4,5 即减去了相同的元素。
List list3 = list2.Except(list1).ToList();
foreach(inti inlist3)
{
MessageBox.Show(i.ToString());
}

合并两个数组,并去掉重复元素,然后排序(C#)

代码如下:

List numbers1 = newList() { 5, 4, 1, 3, 9, 8, 6, 7, 12, 10};
List numbers2 = newList() { 15, 14, 11, 13, 19, 18, 16, 17, 12, 10};
varnewQuerty = numbers1.Concat(
fromn innumbers2
where!numbers1.Contains(n)
selectn
).OrderBy(n=>n);

合并两个数组,并去除合并后的重复数据, 并排序

代码如下:

int[] A={1,2,2,3,4,5,6,6,6};
int[] B={2,2,2,3,7,8,9,5};

List list = new List(A);
list.AddRange(B);

list.Sort();

//去除重复项
foreach (int i in list.Distinct())
{
Console.WriteLine(i);
}

C# 取两个数组的相同元素
以往我们都是肯定绞尽脑汁,肯定什么循环,元素大小,什么因素都考虑进去。但是现在采用Linq可以很好的解决这个问题。找出两个或多个数组的相同项。

代码相当简单:

代码如下:

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceTest4_03
{
classProgram
{
staticvoidMain(string[] args)
{
string[] names = {"Adams","Arthur","Buchanan","Tsbuchis","ShCian","FuchsiaLinda","DecheChen","Lotheer","FindLanciCade","SorchLand","JiangZheng","MisiiLoda","Gtod","Dfac","Lama","BakCades","Losangle","ZheWQ","GehengDahaLothi","ToryLandey","DakaLothy","BthLanda","MenNorth","Fith","FoxMain","DontM","Saobba","Del","Sala","Ghero","BhthLaPhda"};
IEnumerable skip = names.Skip(10);
IEnumerable take = names.Take(11);
//取出两个序列中交集部分,按理论应该输出JiangZheng
IEnumerable intersect = skip.Intersect(take);
foreach(varsinintersect)
{
Console.WriteLine(s);
}
Console.ReadKey();
}
}
}

C# 获取两个数组集合的差集,交集
今天在做一个树形选择节点时,遇到一个问题,属性节点是记录了相关的ID值,第一次呢全部对这些ID进行处理,但是接下来再次选择就要分情况了,原先选择的ID如果不在新选择的集合中那么剔除掉,否则,原先ID不传入函数处理,新ID传入函数处理:

比如原来
①选择的ID是:1,2,3,4 下次:1,2,3,4,5, 那么这时候5要处理,1,2,3,4维持原样。
②选择ID是:1,3 下次: 3,4,5 那么这时候4,5 要处理,3 维持原样。1剔除。
③选择ID是:1,2,3,4,5 下次:3,4,5 那么这时候3,4,5都维持原样,1,2剔除。
④选择ID是:1,2 下次:3,4,5 那么这时候3,4,5处理,1,2剔除。

简化一下数学模型:

大家发现没其实这就是一个数学的概念,集合的差集,那么我们怎么处理呢? 假设前次选择的集合为A,后次选择为B

得到要处理的很简单:B-A (B与A的差集)就是要处理的集合元素,为什么呢?根据概念可知哈!

那么得到不做处理的怎么办呢? 不要处理的必然是B的子集,那么怎么得到呢?

出来啦既是:B-(B-A) 这是为什么呢? B-A 就是要处理的,而维持原样的就是当然就是:B-(B-A),

那么剔除的集合呢? A-(B-(B-A))

如何用C#表示呢,我这里就不用什么循环之类的了,我用的是NET3.5 那就好办了,用Linq处理:

俺这里特殊点,右键得到的树形集合(lstSource)包含了其他信息,先获取ID集合再说:

代码如下:

var m_ilAllSelect = lstSource.Select(r => r.ID).AsEnumerable();//新选择的列表

///////下面开始处理了

List m_ilNewSelect = m_ilAllSelect.ToList();//新选择列表
List m_ilExcept = m_ilNewSelect.Except(m_mcuids).ToList(); //两者的不同之处
List m_iExceptAfterAndNew = m_ilNewSelect.Except(m_ilExcept).ToList();//新选择列表与差集比较,则是新选择中的旧的

为了简化给大家,这里的A代表旧集合,B代表新集合,这里的集合都是List泛型列表。
那么要处理的就是 B.Except(A), 维持原样的:B( B.Except(A)), 剔除的:A.Except(B( B.Except(A))),
不要问我这个Except方法啥意思?看MSDN吧,google也行啦!
当然我实际的源码比这更细致点,至此解决集合的差集的知识点就这些了


    
 
 

您可能感兴趣的文章:

  • C#中怎么将一个List转换为只读的
  • c#将list类型转换成DataTable方法示例
  • c#对list排序示例
  • C#中List〈string〉和string[]数组之间的相互转换
  • C# List中FindAll用法的一些简单示例
  • C# List<T> Contains<T>()的用法小结
  • c#的datatable转list示例
  • C# List排序的实例介绍
  • C#中IList<T>与List<T>的区别深入解析
  • C#中实现任意List的全组合算法代码
  • C#中Ilist与list的区别小结
  • c# List find()方法返回值的问题说明(返回结果为对象的指针)
  • C# 泛型集合List与非泛型集合ArrayList之性能比较
  • 浅析C#中数组,ArrayList与List对象的区别
  • 解析C#中[],List,Array,ArrayList的区别及应用
  • .net C# 实现任意List的笛卡尔乘积算法代码
  • C# List<T>的用法小结
  • 关于C#泛型列表List<T>的基本用法总结
  • Python中列表(list)操作方法汇总
  • java操作mongodb基础(查询 排序 输出list)
  • Python 列表(List)操作方法详解
  • java list去重操作实现方式
  • jQuery操作checkbox选择(list/table)的代码分享
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 使用gdb时为什么调用list不出现代码
  • 在做FTP服务端,请问哪位有解析LIST命令的C语言代码?
  • List转换成DataSet实现代码
  • 使用Linq查询List中数据的代码
  • GDB调试中遇到的问题: 用list命令不能列出源代码? 提示信息: 符号表不被装载。使用"文件" 命令 ???
  • 将DataTable转换成List<T>实现思路及示例代码
  • C++ Lists(链表) 成员 empty():如果list是空的则返回true
  • java.awt 和java.util都有List,想调用awt的List而出现Ambiguous class错误怎么办?
  • C++ Lists(链表) 成员 splice():合并两个list
  • error: expected specifier-qualifier-list before 'list_head
  • C++ Lists(链表) 成员 assign():给list赋值
  • 求 linux/list.h 部分解读list_entry()
  • C++ Lists(链表) 成员 merge():合并两个list
  • 使用XmlSerializer序列化List对象成XML格式(list对象序列化)
  • C++ Lists(链表) 成员 swap():交换两个list
  • python list使用示例 list中找连续的数字
  • C++ Lists(链表) 成员 remove():从list删除元素
  • src/client/sysint/client-state-machine.c:58: add_sm_to_completion_list: Assertion `s_completion_list_index < 256' failed是什么错误啊
  • C++ Lists(链表) 成员 resize():改变list的大小
  • 救急:url为product_list.jsp?dpt_code=01+product_type=0101,怎么样能让product_list.jsp接收到的是dpt_code=01&product_type=0101呢?
  • C++ Lists(链表) 成员 reverse():把list的元素倒转
  • frame如何显示List? 50送上!
  • C++ Lists(链表) 成员 get_allocator():返回list的配置器
  • Linux 源码 list.h的编译问题
  • C++ Lists(链表) 成员 sort():给list排序
  • 读linux内核list.h遇到的问题
  • C++ Lists(链表) 成员 size():返回list中的元素个数
  • 轻量级快速的List实现 GapList


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3