c#List结合IEqualityComparer求交集

List元素类:

    public class MultiPointSearchingRet
    {
        public int ID { get; set; }
        public string PlateNumber { get; set; }
        public int VehicleBrand1 { get; set; }
        public string BrandName { get; set; }
      }

实现了IEqualityComparer的比较类:

    public class MultiPointSearchingRetComparer : IEqualityComparer<MultiPointSearchingRet>
    {
        public bool Equals(MultiPointSearchingRet x, MultiPointSearchingRet y)
        {
            return x.PlateNumber == y.PlateNumber && x.VehicleBrand1 == y.VehicleBrand1;
        }

        public int GetHashCode(MultiPointSearchingRet obj)
        {
            return obj.ID.GetHashCode();
        }
    }

调用:

            List<MultiPointSearchingRet>[] tmpLst = new List<MultiPointSearchingRet>[10];
            List<MultiPointSearchingRet> retLst = new List<MultiPointSearchingRet>();
            //略
            for (int i = 0; i < length; i++)
            {
                if (i == 0)
                    retLst = tmpLst[i];
                else
                    retLst = retLst.Intersect(tmpLst[i], new MultiPointSearchingRetComparer()).ToList();
            }
时间: 2024-12-28 08:42:19

c#List结合IEqualityComparer求交集的相关文章

Erlang生成式实现的列表去重、求交集及并集

%集合去重,Acc初始传入为[],存放的是最终的结果 delSame([],Acc) -> Acc; delSame([Pre|T],Acc) ->checkSame([X||X<-T,X=/=Pre],Acc++[Pre]). %求交集 crossList(L1,L2) -> [X||X<-L1,Y<-L2,X=:=Y]. %求并集 mergeList(L1,L2)-> delSame(lists:merge(L1,L2),[]). 总结:(1)erlang的生

数组去重和两个数组求交集

引言 今天在项目中一个功能要用到两个数组求交集的算法. 大概是这样: 两个表格分别用easyui datagrid实现,要把A表格的一列数据和B表格的一列数据取出来,然后去重,去重后求交集. 那么在计算出的交集中分别根据求出的数据选中两个表格的对应行. 故用到js数组去重和求交集. 交集 Array.prototype.intersect = function(b) { var flip = {}; var res = []; for(var i=0; i< b.length; i++) fli

参数筛选查询——多表求交集(INTERSECT)+WITH AS

先说要实现的需求:一个产品表A,一个属性与属性值表B(属性与属性值存于同一个表,类似于父级与子级的关系),一个产品-属性关联表C,要实现通过多个参数筛选获取符合条件的产品记录. 本能第一反应就是用and连接多个参数(参数个数不定),谁知结果集却是空,主要是表的设计结构决定,表C是一个产品的一个属性就是一条记录,也就是说一个产品可能有多个属性,对应多条记录.而一个属性又可能关联着多个产品,即产品与属性是多对多的关系.用and连接肯定是得不到结果的.怎么办?转换一下思路,用and是将所有属性值一起作

Linux 两个文件求交集、并集、差集

一.交集 sort a.txt b.txt | uniq -d 二.并集 sort a.txt b.txt | uniq 三.差集 a.txt-b.txt: sort a.txt b.txt b.txt | uniq -u b.txt - a.txt: sort b.txt a.txt a.txt | uniq -u 四.相关的解释 使用sort可以将文件进行排序,可以使用sort后面的玲玲,例如 -n 按照数字格式排序,例如 -i 忽略大小写,例如使用-r 为逆序输出等 uniq为删除文件中重

ecnu1624求交集多边形面积

链接 本来在刷hdu的一道题..一直没过,看到谈论区发现有凹的,我这种方法只能过凸多边形的相交面积.. 就找来这道题试下水. 两个凸多边形相交的部分要么没有 要么也是凸多边形,那就可以把这部分单独拿出来极角排序.叉积求面积.这部分的顶点要么p在q内的顶点,要么是q在p内的顶点,要么是两凸多边形的交点. 用到了点在多边形内的判定模板. 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #inclu

PHP实现 bitmap 位图排序 求交集

2014年12月16日 17:15:09 初始化一串全为0的二进制; 现有一串无序的整数数组; 如果整数x在这个整数数组当中,就将二进制串的第x位置为1; 然后顺序读取这个二进制串,并将为1的位转换成整数,顺序存放到新的集合中,就是排好序的了 排序代码: 1 function sort() 2 { 3 // var_dump(PHP_INT_MAX, PHP_INT_SIZE); 4 // int 9223372036854775807 5 // int 8 6 $bitmap = array_

凸多边形并 [ECNU 1624] 求交集多边形面积

求交集多边形面积 Time Limit:1000MS Memory Limit:30000KB Total Submit:98 Accepted:42 Description 在平面上有两给定的凸多边形,若两凸多边形相交,则它们的交集也是一个凸多边形.若两凸多边形不相交,指的是两凸多边形相离或仅限于边界点与边上相交,则相交面积为0.如图所示: 你的任务是编程给出交集多边形的面积. 两给定的凸多边形按顺时针方向依次给出多边形每个顶点的坐标. Input 输入文件第一行为一整数M,表示第一个凸多边形

delphi将两个Strlist合并,求交集 (保留相同的)

Function StrList_Join(StrListA,StrListB:String):String; //将两个Strlist合并,求交集 (保留相同的) var SListA,SListB,SListC:TStringList; i:Integer; begin Result := ''; Try SListA := TStringList.Create; SListB := TStringList.Create; SListC := TStringList.Create; SLis

for循环求交集

for循环方式求交集 #!/usr/bin/env python #coding:utf-8 #取交集 #定义两个序列对象,求alist与blist对象的交集元素 alist = [2,9,3,4,5,6,7,8] blist = [9,2,1,10,33,2,3] #定义一个空list对象,放最终的结果 reslut = [] #遍历alist对象 for x in alist: if x in blist: #如果alist对象中有元素在blist对象里则添加到reslut对象 reslut