Using LINQ, select list of objects inside another list of objects
C#LinqSelectLinq to-ObjectsC# Problem Overview
public class ClassA
{
public string MyString {get; set;}
}
public class ClassB
{
public List<ClassA> MyObjects {get; set;}
}
List<ClassB> classBList = new List<ClassB>();
var results = (from i in classBList select i.MyObjects).Distinct();
I want a distinct list of all the ClassA
objects in the classBList
. How do I go about this using LINQ? I'm thinking about a nested query, but couldn't quite figure it out. Any help is very appreciated.
C# Solutions
Solution 1 - C#
You're trying to select multiple result objects for each ClassB
object in the original list.
Therefore, you're looking for the SelectMany
extension method:
var results = classBList.SelectMany(b => b.MyObjects).Distinct();
If you want to use query expressions, you'll need to use two from
clauses:
var results = (from b in classBList from a in b.MyObjects select a).Distinct();
Solution 2 - C#
You want to use IEnumerable.SelectMany()
Extension Method to flatten the hierarchy:
var result = classBList.SelectMany(b => b.MyObjects).Distinct();