【发布时间】:2017-03-20 08:29:07
【问题描述】:
我有一个具有以下结构的类
public class DisplayItem
{
public string Id { get; set; }
public SortFields SortFields { get; set; }
}
有一个子类
public class SortFields
{
public string ProductNumber { get; set; }
public DateTime DateOfUpload { get; set; }
}
所以想法是根据 SortFields 类属性中的值对 List 进行排序。
我能想到的最基本的解决方案就是做这样的事情
public IEnumerable<DisplayItem> Sort(IEnumerable<DisplayItem> source, string sortBy, SortDirection sortDirection)
{
switch (sortBy)
{
case "Product Number":
switch (sortDirection)
{
case SortDirection.Ascending:
return source.OrderBy(x => x.SortFields.ProductNumber);
case SortDirection.Descending:
return source.OrderByDescending(x => x.SortFields.ProductNumber);
}
case "Uploaded Date":
{
//--do--
}
}
}
理想情况下,我希望能够将 sortBy 作为参数传递给 orderby 方法,虽然我确实在互联网上找到了一些解决方案,但它们似乎无法根据子类属性。
有没有办法我们可以将子类属性作为参数传递并能够对父类列表进行排序?
【问题讨论】:
-
如果要按该属性排序,则必须实现
IComparable接口