Jestem w stanie usunąć duplikaty z kolekcji, mam realizowane IEqualityComparer dla pracownika klasy nadal nie jestem coraz wyjścieJak usunąć duplikaty z kolekcji za pomocą IEqualityComparer, LinQ Wyraźny
static void Main(string[] args)
{
List<Employe> Employeecollection = new List<Employe>();
Employeecollection.Add(new Employe("abc","def"));
Employeecollection.Add(new Employe("lmn","def"));
Employeecollection.Add(new Employe("abc", "def"));
IEnumerable<Employe> coll = Employeecollection.Distinct(new Employe());
foreach (Employe item in coll)
{
Console.WriteLine(item.fName + " " + item.lName);
}
}
poniższa jest implementacja klasy pracownik, tutaj realizowane IEqualityComparer
class Employe : IEqualityComparer<Employe>
{
public string fName { get; set; }
public string lName { get; set; }
public Employe()
{
}
public Employe(string firstName, string LastName)
{
this.fName = firstName;
this.lName = LastName;
}
#region IEqualityComparer<pcf> Members
public bool Equals(Employe x, Employe y)
{
if (x.fName == y.fName && x.lName == y.lName)
{
return true;
}
return false;
}
public int GetHashCode(Employe obj)
{
return obj.GetHashCode();
}
#endregion
}
Czy u proszę wyjaśnić powyższą jedną Rozumiem GroupBy ale co Select (g => g.First() – Gun
Operacja GroupBy zwróci Ci IEnumerable z [IGrouping] (http://msdn.microsoft.com/en-us/library/bb344977.aspx) itemy (również IEnumerables) W przypadku twojego przykładu, w zewnętrznym IEnumerable będą znajdować się dwa elementy: jeden IGrouping z dwoma wpisami dla każdego "abc", "def", inne IGrouping z jednym wpisem dla "lmn", "def" Operator First() zabierze pierwszy element z wewnętrznych IGrouping IEnumerables – avanek
dla logiki z wieloma właściwościami, musisz zgrupować we wszystkich właściwościach, które będą działały wolniej niż porównanie xor .. –