我有两个foreach循环来线性地获取我的一个类的所有属性。
foreach (PropertyInfo property in GetType().GetProperties())
{
foreach (Attribute attribute in property.GetCustomAttributes(true))
{
}
}
如何将这两个循环简化为一个循环或linq操作以获取类属性?
答案 0 :(得分:6)
您可以依靠SelectMany()
var attributes = GetType().GetProperties()
.SelectMany(p => p.GetCustomAttributes(true));
foreach (var attribute in attributes)
{
// Code goes here
}
答案 1 :(得分:4)
或使用查询表示法:
var attributes=from p in yourObject.GetType().GetProperties()
from a in p.GetCustomAttributes(true)
select a;