order by MetadataToken解决反射字段顺序问题

Posted Ace007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了order by MetadataToken解决反射字段顺序问题相关的知识,希望对你有一定的参考价值。

public class Person

{

public string 姓名{get;set;}

}

 

public class Profile:Person

{

public string 档案号{get;set;}

}

 

 

var pros = valueItem.GetType().GetProperties().ToArray();

反射循环取Profile字段的时候发现,Person的字段排在Profile的字段后面,现在要实现Person的字段排在最前面:

尝试加 [DataMember(Order=0)]或[Column(Order=0)]标记均无效.调试观察 发现MetadataToken属性值是父类字段的数字小,子类字段的数字大,因此order by该字段即可:

var pros = (valueItem.GetType().GetProperties().OrderBy(ee=>ee.MetadataToken).ToArray();

 

其他解决办法:https://stackoverflow.com/questions/9977305/c-sharp-how-can-i-sort-the-fields-returned-by-type-getfields-by-their-declar

 

84F67DA5-6A5C-4762-89FA-C3E244FE57E7|From:http://www.cnblogs.com/xuejianxiyang/p/8376000.html

以上是关于order by MetadataToken解决反射字段顺序问题的主要内容,如果未能解决你的问题,请参考以下文章

oracle connect by 递归,反递归,自动补全查询实现

解决distinct与order by 的冲突

使用Order By NULL 解决 group by后自动排序,优化Sql性能

MySQL中Union子句不支持order by的解决方法

UNION ALL、UNION与ORDER BY

SQL 分页查询存储过程中order by 后面不能传变量的问题怎么解决