向下拉列表添加另一个排序选项

本文关键字:排序 选项 另一个 添加 下拉列表 | 更新日期: 2023-09-27 18:35:56

我有这些代码行,它将项目添加到下拉列表中,并按收听日期和时间对它们进行排序。我想更进一步,按字母顺序按项目的"类型"或描述排序。

这是我在控制器中的代码:

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());
    }

我。。域.实体.听力

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)的行

向下拉列表添加另一个排序选项

看起来您的HearingType是一个不实现 IComparable 的类。 在 HearingType 为的类型上实现此接口

public SomeClassThatHearingTypeIsAnInstanceOf : IComparable
{
}

或将代码更改为

.ThenBy(t=>t.HearingType.SomePropertyYouWantToSortBy)

您可能遇到的唯一问题(因为我不知道您的类是如何填充的,因此HearingType可能会null.