C# 向下拉列表添加另一个排序选项
我有这些代码行,它将项目添加到下拉列表中,然后按听证日期和时间对它们进行排序。我想更进一步,按项目的“类型”或描述按字母顺序排序 这是我在控制器中的代码:C# 向下拉列表添加另一个排序选项,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我有这些代码行,它将项目添加到下拉列表中,然后按听证日期和时间对它们进行排序。我想更进一步,按项目的“类型”或描述按字母顺序排序 这是我在控制器中的代码: public void AddHearingsToViewModel(CourtActivityViewModel viewModel, IQueryable<Hearing> hearings) { if (viewModel.HearingEntryId == Guid.Empty)
public void AddHearingsToViewModel(CourtActivityViewModel viewModel, IQueryable<Hearing> hearings)
{
if (viewModel.HearingEntryId == Guid.Empty)
viewModel.HearingEntryId = hearings.OrderByDescending(h => h.HearingDate).ThenByDescending(d=>d.HearingDate).FirstOrDefault().HearingEntryId;
viewModel.Hearings = hearings.ToSelectList("HearingEntryId", "CourtActivitySelection", viewModel.HearingEntryId.ToString());
}
我试过:
viewModel.HearingEntryId = hearings.OrderByDescending(h => h.HearingDate).ThenByDescending(d=>d.HearingDate).OrderBy(t=>t.HearingType).FirstOrDefault().HearingEntryId;
确切的错误是:
无法按类型“Kids.Domain.Entities.HearingType”排序。
描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源
异常详细信息:System.InvalidOperationException:无法按类型“Kids.Domain.Entities.HearingType”排序
红色的行是我添加的
行。然后by(t=>t.HearingType)
看起来您的HearingType
是一个未实现的类。在HearingType所属的类型上实现此接口
public SomeClassThatHearingTypeIsAnInstanceOf : IComparable
{
}
或者将代码更改为
.ThenBy(t=>t.HearingType.SomePropertyYouWantToSortBy)
您可能遇到的唯一问题(因为我不知道类是如何填充的,
HearingType
可能是null
您的。OrderBy(t=>t.HearingType)
应该是。然后by(t=>t.HearingType)
@ErikPhilips刚刚尝试了它,但我仍然得到了相同的错误。我不确定该错误的真正含义是什么,原因是什么。最好是您可以复制并粘贴准确的错误消息,因为我们没有关于您的模型外观的上下文,也没有关于每个属性类型的上下文。您在对象中实现了IComparable吗?@ErikPhilips添加了更多代码和错误消息感谢它为我提供的帮助!关于听力类型可能为空,我已经检查过了,所以我很乐意继续。再次感谢。
.ThenBy(t=>t.HearingType.SomePropertyYouWantToSortBy)