Let\'s suppose if we have a class like:
class Person {
internal int PersonID;
internal string car;
}
I have a list of this class
The following example uses the GroupBy method to return objects that are grouped by PersonID.
var results = persons.GroupBy(x => x.PersonID)
.Select(x => (PersonID: x.Key, Cars: x.Select(p => p.car).ToList())
).ToList();
Or
var results = persons.GroupBy(
person => person.PersonID,
(key, groupPerson) => (PersonID: key, Cars: groupPerson.Select(x => x.car).ToList()));
Or
var results = from person in persons
group person by person.PersonID into groupPerson
select (PersonID: groupPerson.Key, Cars: groupPerson.Select(x => x.car).ToList());
Or you can use ToLookup, Basically ToLookup uses EqualityComparer.Default to compare keys and do what you should do manually when using group by and to dictionary.
i think it's excuted inmemory
ILookup results = persons.ToLookup(
person => person.PersonID,
person => person.car);