2015-08-14 1 views
1

У меня есть вопрос относительно linq.Linq группировка сублистом сущности, которая может быть пуста

class Parent 
{ 
    int ParentId {get; set;} 
    string WhyNoChildren {get; set;} 
    List<Child> Children {get; set;} 
} 

class Child 
{ 
    String Name {get; set;} 
} 

Родитель стол:

ParentId | WhyNoChildren 
    123 | "" 
    567 | "" 
    421 | "No Kids Cause of No Money" 
    543 | "" 

Детский стол:

FK_ParentId | Name 
     123 | "Tom" 
     567 | "Jessy" 
     543 | "Bob" 

Я хочу группе Child.Name, но нужно учитывать, что Родитель не имеет детей. В этом случае мой результат должен быть Parent.WhyNoChilden.

E.g. результат должен выглядеть так:

ParentId | Child.Name 
    123 | "Tom" 
    567 | "Jessy" 
    421 | "No Kids Cause of No Money" 
    543 | "Bob" 

Любые предложения по поводу того, как должен выглядеть запрос linq?

Спасибо и уважением, Rayk

+0

так что вы в основном хотят, чтобы обратить вспять отношения между детьми и родителями? Что-то вроде словаря > 'или' Dictionary > 'будет результатом? –

+0

Результатом будет список pocos (Список ) для привязки к элементу управления ReportViewer. – Rayk

+1

Это не отвечает на мой вопрос. Если вы хотите иметь дочерние элементы GroupBy, значение группы будет представлять собой родительские объекты. Или я полностью не понимаю ваш вопрос. –

ответ

1

Что об этом:

var group = 
    parents 
    .SelectMany(x => 
     x.Children 
     .Select(y => y.Name) 
     .DefaultIfEmpty(x.WhyNoChildren) 
     .Select(y => new { ParentId = x.ParentId, ChildName = y})) 
    .GroupBy(x => x.ChildName); 
+0

Я проверяю это! Но, похоже, это хороший подход! – Rayk

 Смежные вопросы

  • Нет связанных вопросов^_^