我有这些代码行,它们将项目添加到下拉列表中,并通过听取日期然后按时间对它们进行排序。我想更进一步,按字母顺序按项目的“类型”或描述排序。
这是我的控制器中的代码:
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());
}
我的..Domain.Entities.Hearing
public partial class Hearing
{
public string CourtActivitySelection
{
get { return string.Format(@"{0:d} - {0:t} - {1} ", HearingDate, HearingType.Description); }
}
public override string ToString()
{
return string.Format(@"{1} on {0:d} @ {0:t}", HearingDate, HearingType.Description);
}
}
public partial class HearingEntry
{
public override string ToString()
{
return string.Format(@"{1} on {0:d} @ {0:t}", HearingDate, HearingType.Description);
}
}
我试过了:
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'排序。
红线是我添加.ThenBy(t=>t.HearingType)
答案 0 :(得分:1)
您的HearingType
似乎是一个未实现IComparable的类。在HearingType为
public SomeClassThatHearingTypeIsAnInstanceOf : IComparable
{
}
或将您的代码更改为
.ThenBy(t=>t.HearingType.SomePropertyYouWantToSortBy)
您可能遇到的唯一问题(因为我不知道您的课程是如何填充的,因此HearingType
可能是null
。