C# 按名称C对对象属性列表进行排序#

C# 按名称C对对象属性列表进行排序#,c#,C#,我有一个对象,它包含许多字符串类型的属性,其名称由文本和数字组成,如Property1,Property3,Property12。。。等等 我想得到一个属性的排序列表(OrderByDescending),其值不为null 这意味着位于第一个位置的属性应该是其编号(而不是值)最高的属性,该编号是名称的一部分 例如: 如果列表包含具有以下属性的对象: (属性名称:Value) 物业1:3 属性2:空 物业3:2 属性4:空 这应该是我需要的排序列表: 物业3:2 物业1:3 以下是我尝试过的,但不

我有一个对象,它包含许多字符串类型的属性,其名称由文本和数字组成,如
Property1
Property3
Property12
。。。等等

我想得到一个属性的排序列表(OrderByDescending),其值不为null

这意味着位于第一个位置的属性应该是其编号(而不是值)最高的属性,该编号是名称的一部分

例如: 如果列表包含具有以下属性的对象:

(属性名称:Value)

  • 物业1:3
  • 属性2:空
  • 物业3:2
  • 属性4:空
  • 这应该是我需要的排序列表:

  • 物业3:2
  • 物业1:3
  • 以下是我尝试过的,但不起作用:

    var objectType= typeof(Type);
    var result = objectType.GetProperties()
        .Where(p => p.Name.Contains("Property") && p.GetValue(object) != null);
        .OrderByDescending(p => p.Name);
    
    你能帮我实现吗


    谢谢

    您可以在Where子句之后尝试orderby:

    var objectType= typeof(Type);
    var result = objectType.GetProperties()
        .Where(p => p.Name.Contains("Property") && p.GetValue(triangleView) != null)
        .OrderBy(c => c.Name);
    

    这就是我解决问题的方法:

    创建一个方法public int GetNumberFromName(string name){…},然后我可以使用它对对象列表进行如下排序:.OrderByDescending(p=>GetNumberFromName(p.name))


    谢谢你的帮助

    您想对这些属性的值进行排序吗?标题与帖子不匹配-排序从何而来?这似乎是一个糟糕的设计:除了依赖于名称或名称顺序之外,为什么不是一个数组或属性值列表呢?我首先想对属性进行排序。完成后,我将在索引0处获取属性值(在降序排序的情况下)。你能理解我的意思吗?存储在这些属性中的类型正在创建一个方法
    public int GetNumberFromName(string name){…}
    ,然后可以这样使用:
    .OrderByDescending(p=>GetNumberFromName(p.name))我已经试过了,但它不能与OrderBy(c=>c.Name)一起使用。它返回如下内容:Property11,Property1,Property20,Property2…等等