1. C# / Говнокод #14411

    +135

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    FileInfo[] fi = new DirectoryInfo(di.FullName).GetFiles();
    
    var creationList = from file in fi
                                 where file.CreationTime.CompareTo(new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day)) < 0 //This instance is earlier than value. 
                                 group file.CreationTime by DateTime.Parse(file.CreationTime.ToString("yyyy-MM-dd")) into ct
                                 select ct.Key;

    что делает этот код?

    Запостил: taburetka, 24 Января 2014

    Комментарии (13) RSS

    • Подготавливает список всех файлов, которые пользователь создаст в будущем в выбранной директории (наверное для того, чтобы подстраховать пользователя от орфографических ошибок, или для того, чтобы подсказать ей/ему наиболее подходящее время для создания файлов).
      Ответить
    • Получает файлы из директории.

      Фильтрует файлы: только те, что созданы раньше сегодняшнего дня (с временем 00:00:00).
      Группирует файлы по времени создания.
      Возвращает только ключи групп - в данном случае это время создания.

      // Ваш КО
      Ответить
      • Можно записать так:
        from file in fi
        where file.CreationTime < DateTime.Today
        group file.CreationTime by file.CreationTime.Date into ct
        select ct.Key;
        Ответить
    • на знаток сишарпов, но вроде можно было и
      file.CreationDate < DateTime.Now.Date
      Ответить
      • DateTime.Today
        Ответить
        • Я бы вообще через множество сделал. Т.е. создаём множество, фильтруем файлы по дате и засовываем даты в множество.
          Ответить
    • Этот код делает суровую мужскую работу. Давай, расскажи ему, как тебе тяжело в офисе!
      Ответить
    • fi.Where(f => f.CreationTime < DateTime.Today).Select(f=>f.CreationTime).Distinct()
      Ответить
      • имхо
        fi.Select(x => x.CreationTime).Distinct().Where(x => x < DateTime.Today);


        а так как оно все равно будет сортироваться
        fi.Select(x => x.CreationTime).Distinct().OrderByDescending(x=>x).Skip(1);
        Ответить
    • new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day)


      А если день, месяц или год поменяется между этими тремя вызовами?
      Ответить
      • Написать в доках "Не запускать в полночь"
        Ответить
      • о, видно джависта по наличию врожденного чутья на всякие рейскондишны
        Ответить
    • Парни, я не хочу вас расстраивать, но рубли пора сбрасывать
      Ответить

    Добавить комментарий