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<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 }

举例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<string> listold = itemtocheck.AuidtSearchWord.Split(',').ToList(); //旧的搜索词List<string> listnew = NewsearchWords.Split(',').ToList(); //新的搜索词listold.RemoveAll(c => listnew.Contains(c));tempmixwords = string.Join(",", listold.Distinct());

IEqualityComparer接口实现

private static IEnumerable<TSource> ExceptIterator<TSource>(IEnumerable<TSource> first, IEnumerable<TSource> second, IEqualityComparer<TSource> comparer)
{Set<TSource> set = new Set<TSource>(comparer);foreach (TSource source in second)set.Add(source);foreach (TSource source in first){if (set.Add(source))yield return source;}
}public interface IEqualityComparer<in T>
{/// <summary>确定指定的对象是否相等。</summary>/// <returns>如果指定的对象相等,则为 true;否则为 false。</returns>/// <param name="x">要比较的第一个类型为 <paramref name="T" /> 的对象。</param>/// <param name="y">要比较的第二个类型为 <paramref name="T" /> 的对象。</param>
  [__DynamicallyInvokable]bool Equals(T x, T y);/// <summary>返回指定对象的哈希代码。</summary>/// <returns>指定对象的哈希代码。</returns>/// <param name="obj">/// <see cref="T:System.Object" />,将为其返回哈希代码。</param>/// <exception cref="T:System.ArgumentNullException">/// <paramref name="obj" /> 的类型为引用类型,<paramref name="obj" /> 为 null。</exception>
  [__DynamicallyInvokable]int GetHashCode(T obj);
}

public class DeliverySchedulerComparer : IEqualityComparer<DeliverySchedulerDO>
{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<string> 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

求两个集合的交集,并集,差集相关推荐

  1. js寻找两个数组的差集_js求两个数组的交集|并集|差集|去重

    let a = [1,2,3], b= [2, 4, 5]; 1.差集 (a-b 差集:属于a但不属于b的集合)  a-b = [1,3] (b-a 差集:属于b但不属于a的集合)  b-a = [4 ...

  2. C/C++ 求两个集合的交集、并集、差集

    推荐阅读:Python基础自学实用笔记(总和篇)-By Ryan_3610 1.题目:求两个集合的交集.并集.差集 1.1代码 #include <iostream> #include & ...

  3. Java求两个数组的交集、差集、并集

    目录 Java求两个数组的并集,代码如下: Java求两个数组的交集,代码如下: Java求两个数组的差集,代码如下: 交集.差集.并集测试代码如下: Java求两个数组的并集,代码如下: /*** ...

  4. JAVA Hashset求集合的交集并集差集

    JAVA Hashset求集合的交集并集差集 Hashset是Set接口较为常见的一个子类,该子类的最大特点是不允许保存重复的元素,并且所有的内容都采用散列(无序)的方式进行存储. package c ...

  5. java集合操作-----求两个集合的交集和并集

    java求两个集合的交集和并集 java如何求两个集合的交集和并集呢??其实java的API中已经封装了方法.今天写个简单的例子测试一下:(例子中以java.util.LinkedList为例) 求连 ...

  6. java 时间段求并集,java集合操作-----求两个集合的交集和并集

    2019独角兽企业重金招聘Python工程师标准>>> java求两个集合的交集和并集 java如何求两个集合的交集和并集呢??其实java的API中已经封装了方法.今天写个简单的例 ...

  7. oracle 并集 时间_Oracle集合运算符 交集 并集 差集

    集合运算符:UNION/UNION ALL 并集,INTERSECT 交集,MINUS 差集 一.union求并集,公共部分只有包含一次 例:求emp表ename中含'A'或含有'M' SQL> ...

  8. java求两个集合的交集和并集,比较器

    求连个集合的交集: import java.util.ArrayList; import java.util.List; public class TestCollection {public sta ...

  9. C++求两个集合的交集

    建立一个类Intersection求两个整数集合的交集,具体要求如下: (1)私有数据成员 int set[20];用数组空间set存储集合 int len:表示该集合中元素的个数 (2)公有成员函数 ...

  10. oracle 求两个集合的交集,Oracle中的Union、Union All、Intersect、Minus差集交集等集合操作详解...

    Intersect和Minus的操作和Union基本一致,这里一起总结一下: Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序: Union All,对两个结果集进行并集操作 ...

最新文章

  1. HTML5移动应用开发入门经典 中文pdf扫描版
  2. 卡夫卡队列_卡夫卡编年史队列基准
  3. vs2017怎么安装python包,vs2017安装pygame,vs2017安装python第三方包
  4. 自定义UISwitch
  5. Vue 实现点击复制功能概述
  6. [转载] python pandas.read_csv读取大文件
  7. python flask 分页_Python利用flask sqlalchemy实现分页效果
  8. 智慧路灯网关下的校园智慧路灯照明解决方案
  9. 免费的IT类技术书籍大全
  10. Python3读取h5,pkl,npz,npy格式的文件
  11. 2013年图灵奖得主 Leslie Lamport 专访:程序员需要更多的数学知识
  12. OSChina 周六乱弹 ——清明节你怎么过的这么开心?
  13. 显示器6抖8,8抖10
  14. Pandas速查手册
  15. 【英语阅读】纽约时报 | 边走路边看手机有多危险,以及你该如何控制自己
  16. 黑客前线_前线和失踪的中间英里
  17. 离岸价格和到岸价格详解
  18. 太极链——金融的大幅转型已成为趋势
  19. Kibana 中用公式和时间旅行回答的 10 个常见问题
  20. 新媒体运营教程:私域流量运营有5大关键指标

热门文章

  1. DAY 75 【分布式应用】消息队列之卡夫卡 + EFLFK集群部署
  2. 【分布式应用】消息队列之卡夫卡 + EFLFK集群部署
  3. 涨薪 30 % 以上,看这篇万字干货就行(留言点赞抽奖)
  4. 金山WPS移动端笔试-android方向
  5. WPS Office AI实战:一键生成PPT幻灯片
  6. 苹果7支持快充吗_苹果12充电快吗 5-20W快充iPhone12充电时间对比
  7. 普鸥知识产权|美国外观设计专利 侵权判定?
  8. 我为什么讨厌某些读后感
  9. itext设置pdf的尺寸_java-iText PDFDocument页面大小不正确
  10. echart 入门小案例