簡體   English   中英

如何在C#中基於自定義順序對基於屬性的對象數組進行排序?

[英]How to sort an array of objects based on a property in custom order in C#?

我有以下代碼

CustomerModel[] customerModel ;

customerModel = GetCustomerModel(customerReport);

現在,此CustomerModel類具有一個名為DealType的字符串屬性,其可能值為"CostOnly","Edlp","NonPromoted","Periodic"

我想要的只是按照以下順序對DealerModel數組順序按DealType屬性進行排序。

"NonPromoted",
"Edlp",
"Periodic",
"CostOnly"

解決此問題的最佳方法是什么?

提前致謝。

您可以按順序自定義訂單列表中的項目索引進行排序,如下所示:

List<string> sortOrderList = new List<string>()
{
   "NonPromoted",
   "Edlp",
   "Periodic",
   "CostOnly"
};

 customerModel = customerModel.OrderBy(x=> sortOrderList.IndexOf(x.DealType)).ToArray();

這將按sortOrderList順序對每個元素進行排序

另一個選擇是使用Array.Sort()進行就地排序:

Array.Sort(customerModel, (x, y) => sortOrderList.IndexOf(x.DealType) - 
                                    sortOrderList.IndexOf(y.DealType));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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