我有一堂课是这样的:
public class Foo : IEquatable<Bar>, IComparable{
[DataMember]
public Bar bar;
public override bool Equals(object obj){
//Check if not hte right object, return false;
return this.bar == obj as Bar;
}
public bool Equals(Bar other){
if(this.bar == other){
return this.bar == other;
}
}
}
我希望能够有一个包含 bar 的 Foo 列表,并使用 Contains() 方法检查 Bar bar 是否在 Foo 列表中。到目前为止,我没有运气,从我读过的内容来看,如果它们具有定义 IEquatable 的相同父级或者它们是相同类型,则只能将类型与 IEquatable 进行比较。
任何人都知道您是否可以实施
List<Foo> foos.Contains(Bar bar) ?
另外,我想要一个 Bars 列表,并且能够删除 Foos 列表中包含的任何内容,例如;
List<Bar> bars = bars.Where( r => (List<Foo>) !foos.Contains(r)).ToList(); \
这是我需要的最重要的东西,而且看起来很干净。当然,我可以在 for each 循环中进行这些比较,但如果可能的话,我想避免这种情况,并且可能不支付 n*m 的罚款。
谢谢