在复杂对象上使用动态LINQ排序

时间:2010-11-25 11:38:48

标签: c# linq sql-order-by dynamic-linq

我有一个对象列表,我使用动态LINQ来执行排序。

对象是这样的,

public class SampleDTO
    {
        public string Vendor { get; set;}
        public string Invoice { get; set; }
         ..
         ..

}

我使用Dynamic Linq库对此进行排序,

var list= new List<SampleDTO>();
list.OrderBy("Vendor");

如果我传递一个具有列表有效属性名称的排序键(例如供应商)

,这样可以正常工作

问题是,如何为复杂对象执行此操作。

假设我有另一个对象,它是SampleDTO的属性

public class SampleDTO
    {
        public string Vendor { get; set;}
        public string Invoice { get; set; }
        public OtherDTO OtherDTO{get;set; }
         ..

}

public class OtherDTO 
{
        public string LineId{ get; set;}
        ..


}

如果我想使排序足够动态,以便我能够从SampleDTO的直接属性或OtherDTO的属性进行排序(例如需要在OtherDTO.LineId上排序)

实现这一目标的可能方法是什么?

/ BB

2 个答案:

答案 0 :(得分:4)

为什么不使用lamba语法。

list.OrderBy(sample => sample.OtherDto.LineId);

这样做的好处是不依赖于硬编码字符串

答案 1 :(得分:2)

你可以这样做:

list.OrderBy("OtherDTO.LineId");