基本的に私はすべてこれは、細かい作業例えばので、次の作品Linq .Except関数 "少なくとも1つのオブジェクトがIComparableを実装する必要があります。"
さIEquatable(サンプルを以下に示す)public class ContainerClass : IEquatable<ContainerClass>
{
public IEnumerable<CustomClass> CustomClass { get; set; }
public override bool Equals(object obj) { ... }
public bool Equals(ContainerClass other) { ... }
public static bool operator ==(ContainerClass cc1, ContainerClass cc2) { ... }
public static bool operator !=(ContainerClass cc1, ContainerClass cc2) { ... }
public override int GetHashCode() { ... }
}
またIEquatable
public class CustomClass : IEquatable<CustomClass>
{
public string stringone { get; set; }
public string stringtwo { get; set; }
public override bool Equals(object obj) { ... }
public bool Equals(CustomClass other) { ... }
public static bool operator ==(CustomClass cc1, CustomClass cc2) { ... }
public static bool operator !=(CustomClass cc1, CustomClass cc2) { ... }
public override int GetHashCode() { ... }
}
を実装CustomClassを実装容器を有します
IEnumerable<CustomClass> customclassone = new List<CustomClass>
{
new CustomClass { stringone = "hi" },
new CustomClass { stringone = "lo" }
};
IEnumerable<CustomClass> customclasstwo = new List<CustomClass>
{
new CustomClass { stringone = "hi" }
};
var diff = customclassone.Except(customclasstwo);
ContainerClass containerclassone = new ContainerClass
{
CustomClass = customclassone.AsEnumerable()
};
ContainerClass containerclasstwo = new ContainerClass
{
CustomClass = customclasstwo.AsEnumerable()
};
var diff2 = containerclassone.CustomClass.Except(customclasstwo.CustomClass);
このコードの後に、列挙されたdiffとdiff2の両方に、期待される結果が含まれています。私は「少なくとも1つの目的は、IComparableを実装する必要があります。」取得exceptlistを列挙しようとするただし、場合、私はその後
IEnumerable<CustomClass> oldCustom = oldContainerClass.CustomClass;
IEnumerable<CustomClass> newcustom = newContainerClass.CustomClass;
var exceptlist = oldCustom.Except(newcustom);
を試してみてください。上の作業例のものとoldCustomとnewCustomの唯一の違いは、それらが移入される方法です。なぜこれが起こっているのですか?
気にしない場合は、私はコードを少し凝縮して、それを読むために多くのスクロールをする必要はありません。 –
'oldContatinerClass'と' newContatinerCalss'のコードを提供できますか? –
問題を示す短くて完全なプログラムを制作できますか?私はこれがなぜあなたが示したコードだけで起こるのか分かりません。 (あなたはそれを実証するために==と!=演算子は必要ありません) –