我正在尝试对对象列表进行排序,我的else语句中的代码就像魅力一样,但是有一个列具有嵌套属性以及问题发生的位置。当我尝试获取嵌套属性的值时,它会给我null异常。你能帮我全局化代码吗?如果在我的代码中我没有这个额外的东西吗?
if (e.SortExpression == "Distribution.Coder.Name")
lstActivities = lstActivities.OrderByDescending(o => (string)o.Distribution.Coder.Name).ToList();
else
lstActivities = lstActivities.OrderByDescending(o => typeof(Activity).GetProperty(e.SortExpression).GetValue(o, null)).ToList();
答案 0 :(得分:0)
只想与我分享我发现的代码。我不记得它的参考。
public static object GetPropertyValue(object obj, string name)
{
if (string.IsNullOrEmpty(name))
{
return obj;
}
foreach (string part in name.Split('.'))
{
if (obj == null)
{
return null;
}
Type type = obj.GetType();
PropertyInfo info = type.GetProperty(part);
if (info == null)
{
return null;
}
obj = info.GetValue(obj, null);
}
return obj;
}
使用:
GetPropertyValue(Distribution, "Coder.Name")