Я искал способ получить несколько столбцов, но группа только одна в SQL, и я нашел некоторую информацию. Однако я не могу придумать способ сделать это в linq.Выделить все столбцы, но группировать только по одному в linq
У меня есть следующий игрушка пример таблицы:
| Id | Message | GroupId | Date |
|-------------------------------|
| 1 | Hello | 1 | 1:00 |
| 2 | Hello | 1 | 1:01 |
| 3 | Hey | 2 | 2:00 |
| 4 | Dude | 3 | 3:00 |
| 5 | Dude | 3 | 3:01 |
И я хотел бы, чтобы восстановить все столбцы для строк, которые имеют ярко выраженный GroupId
следующим образом (с «Дата» порядок по убыванию):
| Id | Message | GroupId | Date |
|-------------------------------|
| 1 | Hello | 1 | 1:00 |
| 3 | Hey | 2 | 2:00 |
| 4 | Dude | 3 | 3:00 |
Меня не волнует, какая строка выбрана из сгруппированных (первая, вторая ...), пока это единственная, указанная в группе Id.
Я вышел со следующим кодом до сих пор, но он не делает то, что должен:
List<XXX> messages = <MyRep>.Get(<MyWhere>)
.GroupBy(x => x.GroupId)
.Select(grp => grp.OrderBy(x => x.Date))
.OrderBy(y => y.First().Date)
.SelectMany(y => y).ToList();
Обратите внимание, что 'FirstOrDefault' может быть заменяет' First' поскольку группа гуа ranteed иметь как минимум 1 вещь. –
@ Gilad Похоже, я был слишком расстроен ... Вы не только решаете мою проблему, но и предоставляете некоторое понимание с помощью этих примеров! Спасибо – Tekerson
@Tekerson - вы очень желанны :) Возможно, также посмотрите в [SO Documentation for linq] (http://stackoverflow.com/documentation/c%23/68/linq-queries#t=201608111109444847305) - Там хорошие разделы о 'Take'' SelectMany',' OrderBy' - от него можно многому научиться :) –