自定义排序LINQ C#


Custom sorting LINQ C#

我有物品清单。我正在尝试使用其中一个属性对其进行排序。

我正在尝试以下方法:

1
items.OrderBy(x => x.Name).ToList()

项可以包含以下名称的值:

1
2
case 1 - abc,xyz,byc,myu
case 2 - abc3,xur2,iuy7

如果任何值包含int(数字),我希望按降序对列表进行排序。在案例2中,我想按降序排序。在案例1中,排序将按升序进行。问题是如何识别列表是否包含任何整数?以便我决定订购。

1
2
3
4
5
6
public class TestClass
{
    public string ID { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
}


您可以使用Anychar.IsDigit来确定是否有:

1
2
3
4
5
6
7
8
9
10
if(items.Any(x => x.Name.Any(char.IsDigit)))
{
    // descending  
    items = items.OrderByDescending(x => x.Name)).ToList()
}
else
{
    // ascending
    items = items.OrderBy(x => x.Name)).ToList()
}