我想比較我的viewmodel的集合,它基於viewmodel中的兩個屬性。 我需要的是根據startdate對我的視圖模型進行排序,但是如果結尾日期與今天一樣低,它應該放置在集合的底部 在完成排序之後它應該如何應用的示例:傳遞一個匿名類型到IComparer <T>
Stardate Enddate
25/06/2012 25/06/2022
21/06/2012 21/04/2018
31/06/2012 02/07/2012
28/06/2012 01/07/2012
我想,這應該叫,像這樣:
bankPolicyViewModels.OrderBy(vm => new {StartDate = vm.BankAccountViewModel.StartDateIRA,
EndDate = vm.BankAccountViewModel.EndDateIRA},
new ComparerForAnonymousType);
但我無法弄清楚如何定義比較器。 目前,我只帶了這一點:
public class ComparerForAnonymousType<T> : IComparer<T>
where T : class
{
public int Compare(T x, T y)
{
throw new NotImplementedException();
}
}
我可以嘗試通過反射來解決已定義的屬性,但是這將是很容易的出路(也表現重型我猜)。
是否有某種方法可以將匿名類型定義爲T
,或者是否有其他方法可以根據2個屬性對集合進行排序?
哇,我現在覺得很愚蠢,不知道'.ThenBy()',在銥星的答案中也提到過。 'ProjectionComparer'看起來也很有趣,它會很快檢查出來,但與其他解決方案相比,它增加了太多的複雜性。 – 2012-07-26 13:22:42