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

时间:2019-07-18 15:31:12

标签: c#

我有一个对象,其中包含许多字符串类型的属性,其名称由文本和数字组成,例如YYYY-MM-DD HH:MM:SSProperty1Property3 ...等。

我想获取一个值不为null的属性的排序列表(OrderByDescending)。

这意味着在第一位置的属性应该是名称部分的数字(不是值)最高的属性。

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

(属性名称:值)

  1. 属性1:3
  2. 属性2:空
  3. 属性3:2
  4. 属性4:空

这应该是我需要的排序列表:

  1. 属性3:2
  2. 属性1:3

这是我尝试过的方法,但是不起作用:

Property12

请您能帮助我实现它吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

这是我解决问题的方式:

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

感谢您的帮助!

答案 1 :(得分:-1)

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

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