私はXYZ
の座標を3つのプロパティと共に記述するために使用するクラスを持っています。クラスは1つのプロパティのifと等しいです
クラスは次のようになります。
class dwePoint
{
public double X { get; set; }
public double Y { get; set; }
public double Z { get; set; }
public string Prop1 { get; set; }
public string Prop2 { get; set; }
public string Prop3 { get; set; }
public override bool Equals(object obj)
{
return Equals(obj as dwePoint);
}
protected bool Equals(dwePoint other)
{ //This doesnt seem to work
if(Prop1== "Keep")
{
return false;
}
return X.Equals(other.X) && Y.Equals(other.Y) && Z.Equals(other.Z);
}
public override int GetHashCode()
{
unchecked
{
var hashCode = X.GetHashCode();
hashCode = (hashCode * 397)^Y.GetHashCode();
hashCode = (hashCode * 397)^Prop1.GetHashCode();
hashCode = (hashCode * 397)^Z.GetHashCode();
return hashCode;
}
}
}
はEquals
にXYZ
を確認し、私はプロパティを無視して、唯一の実際の座標に基づいて、重複を除外することができます。 は私のコードでは、私は、リストを使用するので、私はList.Distinct()
を呼び出す今、私はまだ把握カント一つのことがある: それは2ポイントが同じXYZ
であることは可能であるが、異なる性質を有します。 その場合、私はいつも特定の文字列(例えば "Keep")でその文字列を保持し、常に他の値を持つものを削除したいと思っています。
私はすでに任意の運なしに、いくつかのif
文をしようとしていた...
私はこれをどのように処理しますか?
*すでにif文*を試していました。あなたは見せてくれますか? –
@ S.Akbari編集しました。私の論理は、同じXYZを持つ2ポイント(またはそれ以上)が存在する可能性があり、2のうち1つだけがProp1に「Keep」を持つことができました。したがって、1つは偽であるが、他のものをチェックすることは、それを複製として返すべきである。 –
オブジェクトを 'Prop1 ==" Keep "と比較すると、これは' false'を返します。これは明らかに間違っています。 –