我想比较我的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