2012-03-22 9 views
2

Я следующее выражение LINQ вытягивать все данные из моей базы данных:Linq GroupBy фильтр

var items = response.Select(a => a.SessionLocationID).ToArray(); 
mdl = _meetingRepository.Select<SessionLocation>() 
    .OrderBy(a => a.SessionDT).ThenBy(a => a.SessionEndTime); 

Теперь я хочу, чтобы сгруппировать по полю ActualRoom и только те, с ActualRoom счетчик> 3

Это возможное?

ответ

6

Вы можете использовать GroupBy, просто имейте в виду, что вы теряете заказ вы уже сделали, так что я бы начать, прежде чем сделать сортировку:

var groups = _meetingRepository.Select<SessionLocation>() 
           .GroupBy(x => x.ActualRoom) 
           .Where(g => g.Count() > 3) 

Чтобы иметь отсортирован группы - при условии, сохраняющий подсчитывать как отдельный объект недвижимости не обязательны, вы можете просто проецируются IEnumerable из IEnumerable<SessionLocation>:

var groups = _meetingRepository.Select<SessionLocation>() 
           .GroupBy(x => x.ActualRoom) 
           .Where(g => g.Count() > 3) 
           .Select(g => g.OrderBy(x => x.SessionDT).ThenBy(x => x.SessionEndTime)); 
+0

Спасибо за быстрый ответ. Я полностью понимаю, что теряю порядок, но можно ли отсортировать результаты в словаре? – user1286550

+0

Вы хотите, чтобы элементы * в пределах * каждой группы отсортированы? – BrokenGlass

+0

да. Я хочу, чтобы элементы в каждой группе отсортировались, по крайней мере, с помощью SessionDT, и если это возможно с помощью SessionEndTime. – user1286550