2012-06-01 43 views
0

我有這些代碼行將項目添加到下拉列表中,並通過聽取日期然後按時間排序它們。我想更進一步,按字母順序排列「類型」或項目描述。添加另一個排序選項到下拉列表

這是我在我的控制器代碼:

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; 

確切的錯誤是:

不能按ty排序pe'Kids.Domain.Entities.HearingType'。 描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。

異常詳細信息:System.InvalidOperationException:無法按類型'Kids.Domain.Entities.HearingType'進行排序。

,並以紅色的線是我加的是.ThenBy(t=>t.HearingType)

+0

你'.OrderBy(T => t.HearingType)'也許應該是'.ThenBy(T => t.HearingType)'。 –

+0

@ErikPhilips剛剛嘗試過了,我仍然會得到相同的錯誤,我不確定那個錯誤真的是什麼意思在那將是原因。 – Masriyah

+0

如果您可以複製並粘貼* exact *錯誤消息,這是最好的,因爲我們沒有您的模型的外觀背景,也不知道每種屬性類型。 –

回答

1

看起來你HearingType是沒有實現IComparable類行。無論是落實的類型HearingType是

public SomeClassThatHearingTypeIsAnInstanceOf : IComparable 
{ 
} 

或更改你的代碼

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

你可能會碰到(因爲我不知道你的類是如何做填充唯一的問題,這個接口是這HearingType可能是null

+0

感謝您對我的幫助!關於聽力類型可能是空的,我已經檢查了,所以我會很好去。再次感謝。 – Masriyah

相關問題