Liste distincte d'objets basée sur une clé arbitraire dans LINQ

J'ai quelques objets:

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" });

Je voudrais processus de cette liste de telle manière que la id domaine est unique, et jetez le non-objets uniques (basée sur l'id).

Du mieux que je pouvais venir avec est:

list = list.GroupBy(i => i.id).Select(g=>g.First()).ToList();

Est-il une plus belle/mieux/le plus rapide pour obtenir le même résultat.

source d'informationauteur Sam Saffron