I have two classes as below:
public class result
{
public person identity { get; set; }
}
public class person
{
public string name { get; set; }
public string family { get; set; }
}
I have List<result>
which has some repetitive data. I want to get rid of repetitive data by System.Linq.GroupBy
I searched a lot and I think the best answer I've found was here, so I have simulated my code as below:
class Program
{
static void Main(string[] args)
{
person p1 = new person();
p1.name = "Bill"; p1.family = "Gates";
person p2 = new person();
p2.name = "Satoshi"; p2.family = "Nakamoto";
person p3 = new person();
p3.name = "AmirAli"; p3.family = "Sam";
List<result> lst = new List<result>();
List<List<result>> lstGrp = new List<List<result>>();
lst.Add(new result { identity = p1 });
lst.Add(new result { identity = p1 });
lst.Add(new result { identity = p1 });
lst.Add(new result { identity = p2 });
lst.Add(new result { identity = p2 });
lst.Add(new result { identity = p2 });
lst.Add(new result { identity = p3 });
lst.Add(new result { identity = p3 });
lst.Add(new result { identity = p3 });
lstGrp = lst
.GroupBy(r => r.identity)
.Select(grp => grp.ToList())
.ToList();
foreach (List<result> list in lstGrp)
{
foreach (result item in list)
{
Console.WriteLine(item.identity.name + " " + item.identity.family);
}
}
}
}
As shown, I have repetitive person in different result but I want to see each person once in my Console as:
But what I faced at last was:
How should I change my code to get the result I want?
Thanks a lot in advance.