当我有两个
例如,尝试获取一个
如何修复这个问题,以实现这个交叉点。
List<string>
对象时,我可以直接使用 Intersect
和 Except
来获取一个 IEnumerable<string>
类型的输出。这很简单,但是如果我想在更复杂的内容上进行交集/差集操作呢?例如,尝试获取一个
ClassA
对象集合,该集合是由 ClassA
对象的 AStr1
和 ClassB
对象的 BStr
进行交集操作后得到的:public class ClassA {
public string AStr1 { get; set; }
public string AStr2 { get; set; }
public int AInt { get; set; }
}
public class ClassB {
public string BStr { get; set; }
public int BInt { get; set; }
}
public class Whatever {
public void xyz(List<ClassA> aObj, List<ClassB> bObj) {
// *** this line is horribly incorrect ***
IEnumberable<ClassA> result =
aObj.Intersect(bObj).Where(a, b => a.AStr1 == b.BStr);
}
}
如何修复这个问题,以实现这个交叉点。
EqualityComparer<T>.Default
。 - Jon SkeetIEnumerable owner1
和owner2
。我通过实现IEqualityComparer
定义了一个名为Compar
的类。现在通过这种方式调用方法owner1 = owner1.IntersectBy(owner2, item => item.Email_Address, new Compar<string>())
。实际上,我想澄清如何传递我的Compar类。是直接写字符串还是有其他更好的方法,或者我的方法可以吗?我的Compar类原型是public class Compar<Tkey> : IEqualityComparer<Tkey>
。抱歉,这可能是一个愚蠢的问题。谢谢。 - corei11