Сортировка списка по дате создания с#
используя этот пример с MSDN:
using System.Collections.Generic;
using System.IO;
namespace CollectionTest
{
public class ListSort
{
static void Main(string[] args)
{
List<FileInfo> files = new List<FileInfo>();
files.Add(new FileInfo("d(1)"));
files.Add(new FileInfo("d"));
files.Add(new FileInfo("d(2)"));
files.Sort(new CompareFileInfoEntries());
}
}
public class CompareFileInfoEntries : IComparer<FileInfo>
{
public int Compare(FileInfo f1, FileInfo f2)
{
return (string.Compare(f1.Name, f2.Name));
}
}
}
как бы я сравнил дату создания.
F1 имеет свойство" creation " date которое является FileSystemInfo.Datetime, но когда я пробую это:
public class CompareFileInfoEntries : IComparer<FileInfo>
{
public int Compare(FileInfo f1, FileInfo f2)
{
return (DateTime.Compare(DateTime.Parse(f1.CreationTime), f2.CreationTime));
}
}
}
Я получаю метод перегрузки соответствует для String. compare(string,string)
Примечание: Я использовал два метода в приведенном выше сценарии, чтобы попытаться вернуть время создания. Не работали - они будут одинаковы в мой фактический сценарий.
ближайший я могу получить есть:
return (DateTime.Compare(DateTime.Parse(f1.CreationTime.ToString()), DateTime.Parse(f2.CreationTime.ToString() )));
4 ответов
описание
вы можете просто использовать LINQ (namespace System.Linq) для этого.
язык интегрированного запроса (LINQ, произносится как "ссылка") является компонентом Microsoft .NET Framework, который добавляет собственные возможности запросов данных к языкам .NET
пример
List<FileInfo> orderedList = files.OrderBy(x => x.CreationTime).ToList();
Дополнительная Информация
Dim filePath as string = "c:\"
эта команда получить список файлов каталога, заказанный ASC
Dim orderedFiles = New System.IO.DirectoryInfo(filePath).GetFiles("*.xml")
.OrderBy(Function(x) x.CreationTime)
эта команда получает список файлов каталога, упорядоченный DESC
Dim orderedFiles = New System.IO.DirectoryInfo(filePath).GetFiles("*.xml")
.OrderByDescending(Function(x) x.CreationTime)
попробуйте это:
public class CompareFileInfoEntries : IComparer<FileInfo>
{
public int Compare(FileInfo f1, FileInfo f2)
{
return (string.Compare(f1.CreationTime.ToString(), f2.CreationTime.ToString()));
}
}