Reputation: 91
i have a Object List, the object look like the following:
class test{
string a {get;set}
string b {get;set}
string c {get;set}
string d {get;set}
string e {get;set}
}
and a list containing about 4000000 Objects of this type.
List<test> list;
How can i remove all duplicates from the list? I mean completely identical objects where all values are identical.
Regards,
Hendrik
Upvotes: 0
Views: 50
Reputation: 34429
Use IEquatable<> with linq distinct :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
List<Test> items = new List<Test>() {
new Test() { a = "1", b = "2", c = "3", d = "4", e = "5"},
new Test() { a = "1", b = "2", c = "3", d = "4", e = "5"},
new Test() { a = "1", b = "2", c = "3", d = "4", e = "5"},
new Test() { a = "2", b = "2", c = "3", d = "4", e = "5"},
new Test() { a = "3", b = "2", c = "3", d = "4", e = "5"},
new Test() { a = "4", b = "2", c = "3", d = "4", e = "5"},
new Test() { a = "5", b = "2", c = "3", d = "4", e = "5"},
new Test() { a = "6", b = "2", c = "3", d = "4", e = "5"},
new Test() { a = "7", b = "2", c = "3", d = "4", e = "5"},
new Test() { a = "8", b = "2", c = "3", d = "4", e = "5"}
};
List<Test> distinct = items.Distinct().ToList();
}
}
public class Test : IEquatable<Test>
{
public string a { get; set; }
public string b { get; set; }
public string c { get; set; }
public string d { get; set; }
public string e { get; set; }
public Boolean Equals(Test other)
{
return
(this.a == other.a) &&
(this.b == other.b) &&
(this.c == other.c) &&
(this.d == other.d) &&
(this.e == other.e);
}
public override int GetHashCode()
{
return (this.a + "^" + this.b + "^" + this.c + "^" + this.d + "^" + this.e).GetHashCode();
}
}
}
Upvotes: 1