2013-05-21 4 views
1

Я чувствую, что я на краю своего ответа!Linq Сортированные поля Groupby и Orderby

У меня есть пользовательский класс fileInfo с держателями информации, такие как «отчетный номером магазина», «дата отчета» и т.д ...

У меня есть List<fileInfo>, который я держу всю информацию о файле. Я попытался сгруппировать список по «отчетности номером магазина» и порядке «отчетной даты»

Я пришел со следующими

var results = ownedFileInfo.GroupBy(x => x.reportStore).Select(group=> new { KeyName = group.Key, KeyInfo = group.OrderBy(x=>x.reportDate).ThenBy(x=>x.reportStore)}); 

List<fileInfo> sortedFiles = new List<fileInfo>(); 
        foreach (var group in results) 
        { 

         foreach (fileInfo fi in group.KeyInfo) 
         { 
          sortedFiles.Add(fi); 

         } 
        } 

GroupBy и функциональность OrderBy работают, как ожидалось. Хотя я надеялся на ThenBy будет сортировать столбец GroupBy а :(

Результаты:

  • магазин # ..... Дата
  • 991 ........ 10/16/13
  • 991 ........ 10/17/13
  • 994 ........ 10/16/13
  • 994 ........ 10/17/13
  • 992 ........ 10/16/13
  • +992 ........ 10/17/13

Ожидаемые результаты:

  • магазин # ..... Дата
  • 991 ........ 10/16/13
  • 991 ........ 10/17/13
  • 992 ........ 10/16/13
  • 992 ....... .10/17/13
  • 994 ........ 10/16/13
  • 994 ........ 10/17/13

Возможно, один из наиболее впечатляющих примеров использования linq, пожалуйста, укажите, что я пропал без вести или что-то не так? Благодарим вас за продвижение за ваше время.

+0

оба ваших примеров показывают отсутствие сортировки по дате, я что-то упускаю? – Hogan

+0

Я не хороший qith linq, но я думаю, что вы не заказываете 'KeyName = group.Key' –

+0

Попробуйте упорядочить конечный результат с помощью' results.OrderBy (grp => grp.KeyName); ' – NominSim

ответ

2

Я не думаю, что для этого выхода вы должны группирования на всех:

var sortedFiles = ownedFileInfo.OrderBy(x => x.reportStore) 
           .ThenBy(x => x.reportDate) 
           .ToList(); 
+0

Wowzers, я подумал, что один :) Большое спасибо, сэр! – clamchoda

1

Я думаю, что вам нужно, это

ownedFileInfo.GroupBy(x => x.reportStore).OrderBy(x=>x.Key).Select.... 

вместо

ownedFileInfo.GroupBy(x => x.reportStore).Select.... 
+0

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