2016-09-27 47 views
-2
public class Sales : Resource 
{ 
    public Channel ChannelName { get; set; } 
    public string Type { get; set; } 
} 

public class Channel:Resource 
{ 
    public string Code { get; set; } 
} 

列表排序對像原型(字符串)屬性(如Type)正常工作,但不適用於像Channel這樣的非原始類型。有什麼建議嗎?列表OrderBy在非原始類型的情況下不起作用

List<Sales> result = GetListofSales(); // list of sales 

result = result.OrderBy(x =>x.Type).ThenBy(**y => y.ChannelName.code**).ToList(); 
+1

問題是什麼?你可以在'Channel'類中實現'IComparable ',或者你可以實現並通過'IComparer ',但是你發佈的代碼對我來說很好。 –

+0

[System.ArgumentException] = {「至少有一個對象必須實現IComparable。」} – Subodh

+0

@IvanStoev是的你是正確的伊萬..非常感謝:) – Subodh

回答

2

事實上,我嘗試過了,它排序數據細,在下面的示例數據

列表列表=新列表();

 Sales sales = new Sales(); 
     sales.ChannelName = new Channel { Code = "B" }; 
     sales.Type = "C"; 
     list.Add(sales); 

     sales = new Sales(); 
     sales.ChannelName = new Channel { Code = "AB" }; 
     sales.Type = "C"; 
     list.Add(sales); 

     sales = new Sales(); 
     sales.ChannelName = new Channel { Code = "A" }; 
     sales.Type = "A"; 
     list.Add(sales); 

     sales = new Sales(); 
     sales.ChannelName = new Channel { Code = "C" }; 
     sales.Type = "B"; 
     list.Add(sales); 

     sales = new Sales(); 
     sales.ChannelName = new Channel { Code = "D" }; 
     sales.Type = "D"; 
     list.Add(sales); 

結果將是 enter image description here

所以,可以看到,它命令A,那麼B和由於有2個銷售與類型= C,它根據所述信道代碼和命令他們儘管頻道B先被添加然後頻道AB,但結果顯示頻道AB然後是B,這意味着第二級次序已被應用

相關問題