Jak działa Distinct ()?

Powiedzmy, że mam to:

class Foo
{
    public Guid id;
    public string description;
}

var list = new List<Foo>();
list.Add(new Foo() { id = Guid.Empty, description = "empty" });
list.Add(new Foo() { id = Guid.Empty, description = "empty" });
list.Add(new Foo() { id = Guid.NewGuid(), description = "notempty" });
list.Add(new Foo() { id = Guid.NewGuid(), description = "notempty2" });

Teraz, kiedy to robię:

list = list.Distinct().Tolist();

Oczywiście zwraca 4 elementy. Chciałbym metodę, która porównuje wszystkie dane, które mam w klasie, i zwraca unikalne elementy, coś, co sprawdza każdą właściwość klasy. Czy muszę napisać własny porównywarka, czy jest coś, co jest wbudowane w ten sposób?

questionAnswers(2)

yourAnswerToTheQuestion