博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
求两个集合的交集,并集,差集
阅读量:5839 次
发布时间:2019-06-18

本文共 3621 字,大约阅读时间需要 12 分钟。

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

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

List B : { 4 , 3 , 9 }

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
Merge
(this List
source, List
target) { List
mergedList = new List
(source); mergedList.AddRange(target.Except(source)); return mergedList; } }

var mergedList = list1.Merge(list2);

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

 

 

举例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

 

一个集合中去除另一个集合

List
listold = itemtocheck.AuidtSearchWord.Split(',').ToList(); //旧的搜索词 List
listnew = NewsearchWords.Split(',').ToList(); //新的搜索词 listold.RemoveAll(c => listnew.Contains(c)); tempmixwords = string.Join(",", listold.Distinct());

 

IEqualityComparer接口实现

private static IEnumerable
ExceptIterator
(IEnumerable
first, IEnumerable
second, IEqualityComparer
comparer){ Set
set = new Set
(comparer); foreach (TSource source in second) set.Add(source); foreach (TSource source in first) { if (set.Add(source)) yield return source; }}public interface IEqualityComparer
{ ///
确定指定的对象是否相等。 ///
如果指定的对象相等,则为 true;否则为 false。
///
要比较的第一个类型为
的对象。 ///
要比较的第二个类型为
的对象。 [__DynamicallyInvokable] bool Equals(T x, T y); ///
返回指定对象的哈希代码。 ///
指定对象的哈希代码。
///
///
,将为其返回哈希代码。 ///
///
的类型为引用类型,
为 null。
[__DynamicallyInvokable] int GetHashCode(T obj);}
public class DeliverySchedulerComparer : IEqualityComparer
{ private static readonly DeliverySchedulerComparer _comparer = new DeliverySchedulerComparer(); public static DeliverySchedulerComparer Instance() { return _comparer; } public bool Equals(DeliverySchedulerDO x, DeliverySchedulerDO y) { return x.DeliveryLineId == y.DeliveryLineId && x.DeliveryManId == y.DeliveryManId; } public int GetHashCode(DeliverySchedulerDO obj) { string code = obj.DeliveryLineId.ToString() + obj.DeliveryManId.ToString(); return code.GetHashCode(); }//var invalidSchedulers = existsSchedulers.Except(dmsSchedulers, DeliverySchedulerComparer.Instance()).ToList();

 

zip操作符

int[] numbers = { 3, 5, 7 };string[] words = { "three", "five", "seven", "ignored" };IEnumerable
zip = numbers.Zip (words, (n, w) => n + "=" + w); // 产生的sequence包含如下元素// 3=three// 5=five// 7=seven

 

 参考:http://www.cnblogs.com/lifepoem/archive/2011/11/29/2267243.html

你可能感兴趣的文章
Foundations of Python Network Programming - 读书笔记系列(3) - Email Services
查看>>
Oracle下建立dblink时的权限问题
查看>>
chrome浏览器,调试详解,调试js、调试php、调试ajax
查看>>
jQuery Ajax 回顾
查看>>
点在多边形内算法,C#判断一个点是否在一个复杂多边形的内部
查看>>
如何在移动设备上搭建服务器承载自己的全景作品?
查看>>
iOS SQLite3数据库操作
查看>>
除了 iOS 和 Android,世界第三大移动系统是什么?
查看>>
35.7. FAQ
查看>>
深搜算法实例:老鼠走迷宫(一)
查看>>
VMWare网络设置的3中方式(转)
查看>>
支付这条线上 谁在赚钱谁在哭?
查看>>
机器学习之朴素贝叶斯分类
查看>>
亚信安全参加第六届全国等保技术大会 态势感知助力“等保2.0”落地
查看>>
【设计模式系列】--抽象工厂
查看>>
JqueryValidate 动态添加验证
查看>>
大数据公司Palantir融得7亿美元 曾追踪拉登
查看>>
先行者长虹佳华超融合市场沙龙在京举行
查看>>
建立备份策略的重要性
查看>>
小白用户如何轻松上云 -我的轻量应用服务器探索记
查看>>