Es ist ziemlich selbsterklärend, was ich versuche zu tun.Erhalten von eindeutigen ungeordneten Tupeln aus einer Sammlung: Wo ist der Fehler in meinem Code?
Mein Code:
public class Solution
{
public static void Main(String[] args)
{
Tuple<int, int> t1 = Tuple.Create(1,2);
Tuple<int, int> t2 = Tuple.Create(1,2);
Tuple<int, int> t3 = Tuple.Create(2,1);
List<Tuple<int, int>> tups = new List<Tuple<int, int>>() { t1, t2, t3 };
var dist = tups.Distinct(new TupleComparer());
foreach(var t in dist)
Console.WriteLine("{0},{1}", t.Item1, t.Item2);
}
}
class TupleComparer : IEqualityComparer<Tuple<int, int>>
{
public bool Equals(Tuple<int,int> a, Tuple<int, int> b)
{
return a.Item1 == b.Item1 && a.Item2 == b.Item2
|| a.Item1 == b.Item2 && a.Item2 == b.Item1 ;
}
public int GetHashCode(Tuple<int, int> t)
{
return t.Item1 + 31 * t.Item2;
}
}
Erwartete Ausgabe:
1,2
(oder 2,1
)
tatsächliche Ausgang:
1,2
2,1
Wo ist der Fehler?
Ich hoffe, dass die Eingabe dieser Zeile mein Text-zu-Code-Verhältnis hoch genug macht, um die Frage zu stellen.
Hast du Klammern versuchen? '(a.Item1 == b.Item1 && a.Item2 == b.Item2) || (a.Item1 == b.Item2 && a.Item2 == b.Item1) ' – itsme86