2015-04-15 2 views
0

У меня есть коллекция A, которая внутренне имеет коллекцию B как одно из ее свойств. Я хочу сгруппировать все элементы внешней коллекции A на основе значения свойства внутренней коллекции.Групповая внешняя коллекция, основанная на стоимости имущества вложенной (внутренней) коллекции

class A 
{ 
    string A; 
    List<B> NestedColl; 
} 

class B 
{ 
    string key; 
    string name; 
    int id; 
} 

Теперь у меня есть

List<A> localCollection = new List<A>(); 

Я хочу, чтобы сгруппировать все элементы коллекции, основанные на значении Id в вложенной коллекции.

+0

Что вы пробовали? Сначала покажите попытку. –

+0

Это похоже на то, что вы хотите простой OrderBy. И.Е. localCollection.OrderBy (itm => itm.NextedColl.id) – Dweeberly

+0

Rahul, все, что я пробовал, не будет строить так прямо сейчас, я написал цикл for, который выполняет эту работу для меня. Я могу поделиться этим кодом, если вы хотите видеть, что –

ответ

0

Не совсем уверен, что вы хотите здесь.

Если у вас это

class A 
{ 
    string A; 
    B NestedB; 
} 

class B 
{ 
    string key; 
    string name; 
    int id; 
} 

Вы можете сделать это

localCollection.GroupBy(a=>a.NestedB.id); 

Но у вас есть вложенные коллекции, так что каждый B может иметь другой идентификатор и который вы бы группа по?

Вы могли бы пойти с первым, как этот

localCollection.GroupBy(a=>a.NestedColl.First().id); 

Или вы могли бы пойти с первым самым большим, как этот

localCollection.GroupBy(a=>a.NestedColl.Max(b=>b.id)); 

Есть и другие варианты тоже, но не зная, что вы хотите, я могу» t более конкретным.

4

Концептуально, это странная вещь, чтобы попытаться обернуть свою голову вокруг, но это будет делать то, что вы хотите:

localCollection 
.SelectMany(a => a.NestedColl.Select(b => new { A = a, Id = b.id})) 
.GroupBy(x => x.Id); 
+0

Thankyou !!! Я занимался хаком, чтобы решить эту проблему часами! Этот ответ должен быть помечен как правильный ... –

+0

Не знаете, почему это не отмеченный ответ – freakyroach

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