C#学习教程:如何对两个不同的IEnumerable集合求交我试图找到最好的方式(或方式)来交叉两个完全不同的相关集合。A类:B类:..我想在z2==j6上将List与List相交。这可以做到吗?这个问题没有意义——结果类型是什么?必须对相同类型的两个序列进行交叉。听起来您不太想要两组之间的交集,作为基于z2的第一个可能值序列的过滤器。例如:HashSetvalidZ2=newHashSet(listB.Select(x=>x.j6));varfiltered=listA.Where(x=>validZ2.Contains(x.z2));或者,也许正如Gabe所建议的那样,您想加入。例如:varquery=fromainlistAjoinbinlistBona.z2equalsb.j6selectnew{a,b};这将为您提供两个列表中匹配z2/j6的所有值对。您需要实现自定义相等比较器(请参阅IEqualityComparer>Interface)以将其作为第二个参数传递给Intersect()。通过intersect方法,可以获取两个枚举之间的公共成员,如下例所示:详细了解C#学习教程,希望大家多多关注---[Test]publicvoidTestObjectIntersect(){vara=新列表{1,2,3,"test","test2"};varb=newList{4,5,1,"test2"};varc=a.Intersect(b);Console.WriteLine(String.Join(",",c.Select(x=>x.ToString()).ToArray()));}classProgram{staticvoidMain(string[]args){varaList=(fromiteminEnumerable.Range(1,10)selectnewA{Z1=item,Z2=item*2}).ToList();varbList=(fromiteminEnumerable.Range(10,100)selectnewB{J5=item,J6=item/2}).列表();varintersect=(fromainaListjoinbinbListona.Z2equalsb.J6selectnew{A=a,B=b}).ToList();foreach(variteminintersect){Console.WriteLine("A:{{{0}}},B:{{{1}}}",item.A,item.B);}}}publicclassA{publicintZ1{get;放;}publicintZ2{得到;放;}//其他字段和属性publicoverridestringToString(){re转string.Format("Z1={0},Z2={1}",Z1,Z2);}}publicclassB{publicintJ5{get;放;}publicintJ6{得到;放;}//其他字段和属性publicoverridestringToString(){returnstring.Format("J5={0},J6={1}",J5,J6);}}本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
