2016-07-29 94 views
0

我有以下代码如何基于C#中的自定义顺序中的属性对对象数组进行排序?

CustomerModel[] customerModel ; 

customerModel = GetCustomerModel(customerReport); 

现在这个CustomerModel类有一个名为DealType"CostOnly","Edlp","NonPromoted","Periodic"可能值的字符串属性。

我只想按照以下顺序通过DealType属性对customerModel数组排序进行排序。

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

解决此问题的最佳方法是什么?

在此先感谢。

+0

可能的复制 - http://stackoverflow.com/questions/8975698/implementing-custom-icomparer-with-string – ChrisF

回答

4

您可以通过一个项目的顺序定制订单列表中的索引这样的排序:

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

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

这通过其在sortOrderList

顺序排序的每个元素的另一种选择是使用数组的.sort()做就地排序:

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

它为我工作。非常感谢。 :) – user3407500

相关问题