Разделение коллекции на подколлекции.
От: Ocenochka  
Дата: 24.11.10 14:10
Оценка:
Есть одна большая (0,5 млн) коллекция, содержащая объекты следующего класса:

 public class Comment
 {
    public DateTime Added { get; set; }
    public int Votes { get; set; }
 }


Коллекция отсортирована по полю Added.
Нужно получить на каждый день (Added.Date) отдельную коллекцию, которая отсортирована по Votes.

    allComments = {получаем отсортированную по Added коллекцию всех Comments };
    begin = allComments.First().Added.Date;
    end = allComments.Last().Added.Date;
    for (var i = begin; i <= end; i = i.AddDays(1))
    {
       var dayResult = allComments.TakeWhile(x => x.Added.Date == i);
       allCommentes = allCommentes.Skip(currentDayResult.Count());
       dayResult = currentDayResult.OrderByDescending(x => x.Votes).ToList();
    }


Пока это самый быстрый вариант, который я смог написать, но сдается мне, что можно еще немного оптимизировать...
Может во второй строке цикла можно не делать "currentDayResult.Count()" или сортировку в последней строке можно оптимизировать...

ps Пока набирал подумал, что можно попробовать банальный GroupBy, но он не будет знать, что коллекция отсортирована и вряд ли будет быстрее.
И не пинайте за простой вопрос — я только учусь.
Люблю ставить оценки.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.