2013-05-27 2 views
1

я следующий класс:LINQ как GroupBy правильно

class AssembledDTO 
{ 
    int pid, 
    int blockId, 
    List<string> references 
} 

Я пытаюсь группе все в следующим образом:

AssembledParts.GroupBy(entry => new 
         { 
          entry.PID, 
          entry.BlockId 
         }). 
         Select((key , val)=> new AssembledDTO 
          { 
           BlockId = key.Key.BlockId, 
           PID = key.Key.PID, 
           References = val. 
          }) 

В References Я хочу, чтобы получить список всех references суммируются каждой группы, которую я сгруппировал.

Как я могу это сделать? Что я здесь пропущу?

+0

Вы пробовали 'Ссылки = ключ.ToList()'? – I4V

+0

@ I4V Я не вижу там ToList() –

+0

Пожалуйста, не переуступайте! http://stackoverflow.com/q/16773147/861716 Отредактируйте свой вопрос вместо этого. –

ответ

2

SelectMany должен сделать трюк, чтобы сгладить результаты.

AssembledParts.GroupBy(entry => new 
        { 
         entry.PID, 
         entry.BlockId 
        }). 
        Select(key => new AssembledDTO 
         { 
          BlockId = key.Key.BlockId, 
          PID = key.Key.PID, 
          References = key.SelectMany(v => v.references).ToList(); 
         }) 
+1

Downvoter - не могли бы вы дать мне несколько намеков на то, что не так с этим ответом? Я не тестировал его, но, похоже, это то, что ищет Night Walker. Если я ошибаюсь, я хотел бы знать и исправить себя. – Pako