2016-09-27 21 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,这意味着第二级次序已被应用

相关问题