[英]Sorting in C# using linq
當按鈕單擊時,我需要檢查列表在頁面加載時是否按升序和降序排列。 但我需要檢查列表是否已按升序排序我需要按降序排序,如果列表已按降序排序則需要按升序排序。 我如何實現此目的,我在下面附加了我的代碼。 有人可以幫我嗎?
public ActionResult OrderbyName(ResultWrapper wrapper)
{
wrapper.HotelDetails = wrapper.HotelDetails.OrderBy(m =>m.Name).ToList();
//wrapper.HotelDetails = wrapper.HotelDetails.OrderByDescending(m => m.Name).ToList();
//}
//else
//{
// wrapper.HotelDetails = wrapper.HotelDetails.OrderByDescending(m => m.Name).ToList();
//}
return Json(wrapper);
}
你可以做
wrapper.HotelDetails.Reverse()
return Json(wrapper.HotelDetails)
這將反轉項目的當前順序。
if (wrapper.HotelDetails.SequenceEqual(wrapper.HotelDetails.OrderBy(m => m.Name)))
{
wrapper.HotelDetails = wrapper.HotelDetails.OrderByDescending(m => m.Name);
}
else if (wrapper.HotelDetails.SequenceEqual(wrapper.HotelDetails.OrderByDescending(m => m.Name)))
{
wrapper.HotelDetails = wrapper.HotelDetails.OrderBy(m => m.Name);
}
else
{
// List isn't ordered, you haven't specified what must be done in this case
}
首先,檢查序列是否與自身的升序版本匹配,如果是,則對其降序排序。 如果它與自身的降序版本匹配,則將其升序排序。 如果未訂購,則可以執行任何一種操作,但是您尚未指定此項(除非我誤解了這個問題)。
注意:這可以重構為更“優雅”,但我將其保留為簡單易讀的if
語句,因此您可以掌握它的作用。
這個問題的答案在很大程度上取決於其他信息。 如果在DataGrid中執行此操作,則答案可能是“將AllowSorting
設置為true
”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.