2 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
試試 LINQ:
using System.Linq; var ordered = agencyList.OrderBy(x => x.PublishDate);
或者如果你需要它降序:
var orderedDesc = agencyList.OrderByDescending(x => x.PublishDate);
如果您再次需要原始變量中的列表,您可以調(diào)用.ToList()
:
agencyList = agencyList.OrderBy(x => x.PublishDate).ToList();
如果 LINQ 不適合您(或者您希望獲得最佳性能從而拒絕 LINQ 帶來的開銷),您可以使用.Sort
您嘗試的方法:
agencyList.Sort((item1, item2) => item1.PublishDate.CompareTo(item2.PublishDate));

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以嘗試使用 SortedList 代替 List,這樣當(dāng)您添加項(xiàng)目時(shí)它會自動(dòng)排序。
定義您的類/接口:
interface INews1BE
{
DateTime PublishedDate { get; set; }
}
class News1BE : INews1BE
{
public DateTime PublishedDate { get; set; }
}
為 DateTime 定義比較器:
class DateTimeAscendingComparer : IComparer<DateTime>
{
public int Compare(DateTime a, DateTime b)
{
return a.CompareTo(b);
}
}
現(xiàn)在創(chuàng)建比較器和排序列表,將比較器傳遞給 SortedList 構(gòu)造函數(shù):
var comparer = new DateTimeAscendingComparer();
var sortedList = new SortedList<DateTime, INews1BE>(comparer);
添加一些項(xiàng)目并檢查結(jié)果:
var item1 = new News1BE()
{
PublishedDate = DateTime.Now
};
var item2 = new News1BE()
{
PublishedDate = item1.PublishedDate.AddSeconds(-30)
};
sortedList.Add(item1.PublishedDate, item1);
//item2 goes before item1
sortedList.Add(item2.PublishedDate, item2);
foreach(var x in sortedList)
{
Console.WriteLine(x.Key);
}
您還可以通過 Value 訪問您的對象:
foreach (var x in sortedList)
{
Console.WriteLine(x.Value.PublishedDate);
}
或者您可以迭代 Values 以立即訪問您的 INews1BE 對象:
foreach(var x in sortedList.Values)
{
Console.WriteLine(x.PublishedDate);
}
實(shí)際上,如果您只關(guān)心升序,則不必為 DateTime 定義比較器 - 這是默認(rèn)行為,因此您可以創(chuàng)建 SortedList 而無需將比較器傳遞給構(gòu)造函數(shù):
var sortedList = new SortedList<DateTime, INews1BE>();
但是,如果您需要降序,只需在比較時(shí)將DateTimea與 DateTime切換b:
class DateTimeDescendingComparer : IComparer<DateTime>
{
public int Compare(DateTime a, DateTime b)
{
return b.CompareTo(a);
}
}
- 2 回答
- 0 關(guān)注
- 149 瀏覽
添加回答
舉報(bào)