【发布时间】:2012-09-19 21:08:16
【问题描述】:
我有一个类,其中一些道具标记有一些属性。我想按特定顺序显示它们。到目前为止,我可以将它们按顺序排列,但不能按我想要的顺序排列。
这里是带有属性的道具的简单示例
[IncludeInEditor]
[IsInPk]
ID
[IncludeInEditor(IsReadOnlyOnModify=true)]
Name
[IncludeInEditor]
Address
[IncludeInEditor]
DOB
The order that I want is:
1st - Props with IsInPk attribute
2nd - Props with IncludeInEditor(IsReadOnlyOnModify=true)
3rd - Props with IncludeInEditor
到目前为止,我没有成功,也没有 100% 完成(仍然缺少 IsReadOnlyOnModify=true 部分)
var properties =
item.GetType().GetProperties()
.Where(p => p.GetCustomAttributes(true)
.OfType<IncludeInEditorAttribute>()
.Count() > 0)
.Select (x => new
{
Property = x,
Attribute = (IsInPkAttribute)Attribute.GetCustomAttribute(x, typeof(IsInPkAttribute), true)
})
.OrderBy(x => x.Attribute != null ? 1 : -1)
.Select(x => x.Property)
.ToArray();
【问题讨论】:
-
.Count() > 0到.Any()应该更快。 -
好点奥斯汀!我会重新考虑这一点,我的项目中有很多 Count > 0。 :-(
标签: c# linq sorting attributes sql-order-by