Używając LINQ, wybierz listę obiektów wewnątrz innej listy obiektów
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();
Chcę mieć odrębną listę wszystkich ClassA
obiektów w classBList
. Jak to zrobić używając LINQ ? Myślę o zagnieżdżonym zapytaniu, ale nie mogłem tego rozgryźć. Każda pomoc jest bardzo doceniana.
36
Author: Tatranskymedved, 2010-10-14
2 answers
Próbujesz wybrać wiele obiektów wynikowych dla każdego obiektu ClassB
z oryginalnej listy.
Dlatego szukasz SelectMany
metoda rozszerzenia :
var results = classBList.SelectMany(b => b.MyObjects).Distinct();
Jeśli chcesz używać wyrażeń zapytań, musisz użyć dwóch from
klauzul :
var results = (from b in classBList from a in b.MyObjects select a).Distinct();
78
Author: SLaks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-14 15:02:23
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-14 15:02:23
Chcesz użyć IEnumerable.SelectMany()
metoda rozszerzenia do spłaszczenia hierarchii:
var result = classBList.SelectMany(b => b.MyObjects).Distinct();
12
Author: Justin Niessner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-14 15:02:31
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-14 15:02:31