Мне кажется, мне нужно было внести некоторые дополнительные изменения в код, который вы использовали.Ниже приведен новый код для comboBox:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
List<Files> yourNewList = Files.GetFiles();
List<String> u = new List<string>();
if (comboBox1.Text == "Month")
{
u = (from Files f in yourNewList
where DateTime.Parse(f.CreationDate.Substring(0, 10)) > DateTime.Now.AddMonths(-1)
select f.FileName).ToList();
}
else if (comboBox1.Text == "3 Month")
{
u = (from Files f in yourNewList
where DateTime.Parse(f.CreationDate.Substring(0, 10)) > DateTime.Now.AddMonths(-3)
select f.FileName).ToList();
}
else if (comboBox1.Text == "1 Year")
{
u = (from Files f in yourNewList
where DateTime.Parse(f.CreationDate.Substring(0, 10)) > DateTime.Now.AddMonths(-12)
select f.FileName).ToList();
}
listBox1.DataSource = u;
}
Используется созданный мной класс, который хранит объекты File, имеющие как имя файла, так и дату / время создания:
Поскольку вы можете видеть, что многие из них используют одну и ту же дату создания (один из апрельских файлов - старый zip-файл, который я нашел для использования), это сделано так, как я сделал эти файлы вчера, чтобы помочь вам.Я не могу подделать дату создания, которую Windows извлекает из файла.
Сам класс использует этот код:
public class Files
{
public string FileName { get; private set; }
public string CreationDate { get; private set; }
public List<Files> theseFiles
{
get
{
return GetFiles();
}
}
public Files(string fileName, string creationDate)
{
this.FileName = fileName;
this.CreationDate = creationDate;
}
public static List<Files> GetFiles()
{
//Gets full file names
List<String> t = Directory.GetFiles(@"C:\Users\justin\Desktop\New folder (2)\").ToList();
List<String> t2 = new List<string>();
foreach (var yyy in t)
{
t2.Add(Path.GetFileName(yyy));
}
//Creation Dates
var dirInfo = new DirectoryInfo(@"C:\Users\justin\Desktop\New folder (2)");
List<String> fct = (from f in dirInfo.GetFiles("*", SearchOption.TopDirectoryOnly)
select f.CreationTime.Date.ToShortDateString()).ToList();
List<String> y = new List<string>();
foreach (var zzz in fct)
{
y.Add(zzz);
}
//Creats a collection of the file objects for you to use
List<Files> gg = new List<Files>();
for (int x = 0; x < t2.Count(); x++)
{
//Adjusts the dates to add 0's in the off chance that they aren't there
if(DateTime.Parse(y[x]).Month < 10)
{
y[x] = "0" + y[x];
}
if(DateTime.Parse(y[x]).Day < 10)
{
y[x] = y[x].Insert(3, "0");
}
Files thefile = new Files(t2[x].ToString(), y[x].ToString());
gg.Add(thefile);
}
return gg;
}
public override string ToString()
{
return string.Format("{0} , {1}", FileName, this.CreationDate);
}
}
Все, что вам нужно сделать, это добавить класс в ваш проект под названием Filesи вставьте этот код внутрь.(Убедитесь, что вы изменили каталог в классе, поскольку он в данный момент указывает на мою папку)
Затем вставьте код сверху вниз в метод SelectedIndexChanged на странице .cs вашей формы.
Помните, условные операторы if основаны на времени создания, поэтому вы увидите имена файлов (например, с датой 9/11/2010), которые там не принадлежат.(Еще раз я создал все эти файлы вчера, и тот, который имеет дату от 04/04/2011, является более старым zip-файлом, который я нашел в апреле, и поместил его в папку для тестирования).
На двух рисунках вы видите добавление 1 файла, который имеет смысл, основываясь на верхней части SS, где вы видите коллекцию return gg.В этом SS единственный файл, который выходит за пределы вчерашней даты создания, - это файл от 04/04/2011, поэтому он появляется, когда я выбираю «1 год».