C#中判断一个集合是另外一个集合的子集

有这样的两个集合:

string[] bigArr = new string[] { "a", "b", "c" };
string[] smallArr = new string[] { "a", "b"};

现在需要判断smallArr是否是bigArr的子集。只要拿着bigArray和smallArr比较,求差集,如果差集的个数大于0,就说明smallArr是bigArr的子集。

            //在大集合的基础上,根据小集合获取大集合的差集
            var exceptArr = bigArr.Except(smallArr);

            //判断是否是子集
            if(exceptArr.Any())
            {
                Console.WriteLine("samllArr 是 bigArr的一个子集");
            }
            else
            {
                Console.WriteLine("samllArr 不是 bigArr的一个子集");
            }

以上的方式,只能判断是否是子集,即是子集的那个集合元素永远小于大的那个集合。

有时候,还存在这样的需求:判断bigArr是否包含smallArr,即smallArr可以是bigArr的子集,也可以和bigArr是一样的。

            //判断是否是子集或2个集合一样
            if(smallArr.All(t => bigArr.Any(b => b==t)))
            {
                Console.WriteLine("samllArr 是 bigArr的一个子集或一样");
            }
            else
            {
                Console.WriteLine("samllArr 不是 bigArr的一个子集或一样");
            }
时间: 2024-08-27 01:03:10

C#中判断一个集合是另外一个集合的子集的相关文章

java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”

在javascript中有一个方法isDigit()使用来判断一个字符串是否都是数字,在java的字符串处理方法中没有这样的方法,觉得常常需要用到,于是上网搜了一下,整理出了两个用正则表达式匹配的判断方法,如下: // 判断一个字符串是否都为数字 public boolean isDigit(String strNum) { return strNum.matches("[0-9]{1,}"); } // 判断一个字符串是否都为数字 public boolean isDigit(Str

[ jquery 过滤器 prev([expr]) ] 此方法用于在选择器的基础之上搜索查找取得一个包含匹配的元素集合中每一个元素紧邻的前一个同辈元素的元素集合

取得一个包含匹配的元素集合中每一个元素紧邻的前一个同辈元素的元素集合,可以用一个可选的表达式进行筛选.只有紧邻的同辈元素会被匹配到,而不是前面所有的同辈元素 expr 用于筛选前一个同辈元素的表达式 实例: <html lang='zh-cn'> <head> <title>Insert you title</title> <meta http-equiv='description' content='this is my page'> <

jquery ajax中支持哪些返回类型以及js中判断一个类型常用的方法?

1 jquery ajax中支持哪些返回类型在JQuery中,AJAX有三种实现方式:$.ajax() , $.post , $.get(). 预期服务器返回的数据类型.如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML.在 1.4 中,JSON 就会生成一个 JavaScript 对象,而 script 则会执行这个脚本.随后服务器端返回的数据会根据这个值解析后,传递给回调 函数.可用值: •"xml": 返回

[ jquery 过滤器 siblings(expr) ] 此方法用于在选择器的基础之上搜索取得一个包含匹配的元素集合中每一个元素的所有唯一同辈元素的元素集合,可以用可选的表达式进行筛选

此方法用于在选择器的基础之上搜索取得一个包含匹配的元素集合中每一个元素的所有唯一同辈元素的元素集合,可以用可选的表达式进行筛选 实例: <html lang='zh-cn'> <head> <title>Insert you title</title> <meta http-equiv='description' content='this is my page'> <meta http-equiv='keywords' content='

C#中判断一个网址是否可以打开

public static void GetPage(String url) { try { // Creates an HttpWebRequest for the specified URL. HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url); // Sends the HttpWebRequest and waits for a response. HttpWebResponse myHttpW

黑马程序员——java——自定义一个比较器,对TreeSet 集合中的元素按指定方法来排序

自定义一个比较器,对TreeSet 集合中的元素按指定方法来排序 import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; //自定义一个比较器 class Mycompare implements Comparator { @Override public int compare(Object o1, Object o2) { // TODO Auto-generated method s

把XML文档中的每一本书封装到一个book对象,并把多个book对象放到一个list集合当中返回

1 package sax; 2 3 import java.awt.print.Book; 4 import java.io.IOException; 5 import java.util.ArrayList; 6 import java.util.List; 7 8 import javax.xml.parsers.ParserConfigurationException; 9 import javax.xml.parsers.SAXParser; 10 import javax.xml.p

一个类在另一个类中以集合形式声明为属性时应该注意的问题

标题:一个类在另一个类中以集合形式声明为属性时应该注意的问题,先解释一下,看下面的代码吧 [Serializable] public class MO_T_sj_quest { public List<MO_T_sj_answer> AnswerList { get; set; } public List<MO_T_sj_answer> IDList { get; set; } public List<MO_T_sj_quest_bind> BindList { get

4.产生10个1-100的随机数,并放到一个数组中 (1)把数组中大于等于10的数字放到一个list集合中,并打印到控制台。 (2)把数组中的数字放到当前文件夹的numArr.txt文件中

package cn.it.text; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; /* * 4.产生10个1-100的随机数,并放到一个数组中 (1)把数组中大于等于10的数字放到一个list集合中,并打印到控制台. (2)把数组中的数字放到当前文件夹的number.txt文件中 */ public class Test4 { public static void main

判断一个数能否通过一个数组中的数相乘而得到(数组中的数使用次数不限)

题目:判断一个数能否通过一个数组中的数相乘而得到(数组中的数使用次数不限) 例如:第一行输入目标数x,第二行再输入一个数组(每个数用空格隔开),如果能则输出1,不能则输出-1: 输入例1: 20 2 3 5 7 输出: 1 解释:20 = 2*2*5,可以组成,所以输出1. 输入例2: 20 3 5 7 输出: -1 解释:无法组成,所以输出-1. 解题思路:转化成完全背包问题来解决(因为每个因子都可以使用无限次) #include <iostream> #include <bits/s