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)
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…等等