【发布时间】:2019-06-22 09:48:37
【问题描述】:
我有对象列表。我正在尝试使用其中一个属性对其进行排序。
我正在尝试以下内容:
items.OrderBy(x => x.Name).ToList()
items 可以包含 Name 的值,如下所示:
case 1 - abc,xyz,byc,myu
case 2 - abc3,xur2,iuy7
如果任何值包含 int(数字),我想按降序对列表进行排序。 所以在案例2中,我想按降序排序。在情况 1 中,排序将按升序排列。问题是如何识别列表是否包含任何整数?这样我就可以决定排序了。
public class TestClass
{
public string ID { get; set; }
public string Name { get; set; }
public string Address { get; set; }
}
【问题讨论】:
-
这不是自定义排序,而是基于值的不同顺序方向。您不能在排序操作中间更改排序方向,因此您必须在调用
OrderBy()或OrderByDescending()之前决定使用哪种排序。 -
您可以使用
ICompare扩展您的类,并使用您自己的逻辑创建compare方法。然后,当调用您的自定义方法时,它会使用您的自定义compare方法对您的列表进行排序。查看this 链接了解更多信息。你可以找到例子等等
标签: c#