关于如何对两个 集合的数值进行比较

又到水的时间了,-。-  先讲下今天 在工作上遇到一个的问题吧! 其实相对的来说很简单 就是如同标题一样,因为我是在用Linq写,所以卡了下 顺便百度了下,首先假设 有一张学生表 和 课程表, 一个学生能选多个课程 所以在这里学生和课程表 是一对多的,而我现在 选择了 信息 数学 历史 这3门课程 去查没有选择过这三门课程的学生

以下 是代码:

              var sc = from s in Entites.Students    
                  select new 
                 {
                  s.Course
                 };
             

              List<int> course = new list<int>
                        {
                          1,
                         2,
                        3,

                        };
         
         sc = sc.Where(n=> course.Contaic(n.Course));

上面代码的写法是有误,也是我最初的想法,我想将两个List里的值去进行比较取反 从而得到我想要的效果,当然对Linq掌握的很糟糕的我发现Contaic(这里单词估计打错了) 它里面接受的是一个(int item)也就是说它并不适合去进行一个集合直接的比较,然后我通过Linq里的Intersect() 这个,发现提示 参数无效,于是我转换思路了 因为我已经在这里花了半个小时的时间了,

第二种写法:

    var sc = from s in Entites.Students
             from c in s.Course
            selec s;
     List<int> course = new list<int>
                        {
                          1,
                          2,
                          3,

                        };
         
         sc = sc.Where(n=> !course.Contaic(n.Course.type));

这种写法 势必会造成查出很多重复的数据,后面你必须不得不对它进行一个去重的步骤,不过想要的效果出现了, 其实我最早的是想法 是将两个集合都去进行一个遍历比较的 这样就会有两次遍历 但发现不是很好(主要还是自己不会写) 所以想偷一下懒 择中一下,当然 我发现实际效果不是很理想 不知道是不是因为前面太多的查询导致的,这个 到时由大神去优化吧! 其实当我们卡在一个功能实现的时候,不如换个思路,我一直很喜欢一句话“换个角度,看世界”。好了,这次就水这么多啦。

时间: 2024-10-26 00:41:22

关于如何对两个 集合的数值进行比较的相关文章

Java里面如何求两个集合的交集

在Python里,或许我们没有这个烦恼,因为python里已经为我们提供了intersection这样的方法. 但是在Java里,就需要我们动一番脑筋了.这里浓重推荐下apache的CollectionUtils工具类. 方法签名如下所示: org.apache.commons.collections.intersection(final Collection a, final Collection b) 那么这个方法是怎么实现的呢?这里以list为例 public class TestInte

计算两个集合的差集——第六期 Power8 算法挑战赛

第六期Power8大赛 1.1 比赛题目 题目: 计算两个集合的差集: 详细说明: 分别有集合A和B两个大数集合,求解集合A与B的差集(A中有,但B中无的元素),并将结果保存在集合C中,要求集合C中的元素升序. 输入为两个文件,分别为A.txt,B.txt,一行一个值,并且是无序的.结果输出到C.txt,即输入文件的差集,一行一个值,并且要求结果升序排列. 考量点: (1) 大数集合求差集: (2) 大数据集合排序: 题目实例: 例如,若集合A={5,20,10,15,25,30},集合B={1

两个集合求差

需求:从两个不同历史版本的数据库提取出相同的表数据(多个表)进行差异对比. 实施:使用集合的Except扩展方法 过程:开始想的是写代码循环比较差异,但是代码写起来比较繁琐,后来发现集合有一个Except扩展方法正是用来实现求差集的. 部分代码如下 EnumerableRowCollection<HtRefInfo> hta; EnumerableRowCollection<HtRefInfo> htb; hta = DalA.LoadHt(ids); htb = DalB.Loa

java求两个集合的差集

public static void main(String[] args) {Set set = new HashSet();Set set1 = new HashSet();set.add("sanny");set.add("mary");set.add("bill");set.add("tom");set.add("tony");set.add("mark");set.add(&q

计算两个集合的交集数字(java)

循环判断2个数组 将相同的公共元素复制到新数组中即可 1 2 3 import java.util.Arrays; 4 5 public class count_same_number { 6 7 public static int[] join(int[] a,int[] b) 8 { 9 int count=0; 10 int new_target[]=new int[Math.max(a.length, b.length)];//新数组 11 int index=0; 12 for(int

使用MinHash算法计算两个集合的相似度

集合相似度计算是一个常见的问题.例如,已知看过芈月传的人都有哪些,还知道看过琅琊榜的人都有哪些,那么想知道同时看过两者的人群占至少看过一部的人群的占比,就是求这两个集合的相似度: 集合A = 看过芈月传的人群集合B = 看过琅琊榜的人群相似度 = |A∩B| / |A∪B| = 既看过芈月传又看过琅琊榜的人数 / 看过芈月传或琅琊榜的人数 当集合的元素较少时,我们可以采用逐一比较的方式来找出既在集合A出现也在集合B出现的人,统计其人数,再除以至少在集合A或集合B出现的人数,得到相似度. 然而当集

c++ 比较两个集合

要先std::sort std::set_difference std::set_union c++ 比较两个集合,布布扣,bubuko.com

两个集合求对称差集

对称差集,两个集合的并集,减去交集. 比如,集合1,2,3和集合3,3,4,5的对称差是集合1,2,4,5. 想到的解法,将两个排序,两个集合分别用两个工作指针i,j.比较两个指针指向的元素,相同就都后移,不相同,更小的指针后移. 以下代码,给出了求对称差集数量的代码. public static int distinctElementCount(int arr1[], int arr2[]) { if (arr1.length == 0) { return arr2.length; } if

关于Linq对DataTable和List各自的两个集合筛选的相关操作技巧

项目中用到了对两个集合的帅选等操作,简单总结下 1.Linq操作多个Datable 可以通过AsEnumerable()方法对DataTable进行Linq操作 //获取数据表所有数据 DataTable allJDt = GetDbDataTable(m_DBFile, "select * from 监测点"); //所有插入的数据 DataTable jAddDt = dt.AsEnumerable() .Where(n => n.Field<string>(&q