簡體   English   中英

使用linq在C#中排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM