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

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

如下 是代码:c#

              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() 这个,发现提示 参数无效,因而我转换思路了 由于我已经在这里花了半个小时的时间了,优化

第二种写法:spa

    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));

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

相关文章
相关标签/搜索