C# 如何获取嵌套属性的propertyvalue?

C# 如何获取嵌套属性的propertyvalue?,c#,asp.net,C#,Asp.net,我试图对对象列表进行排序,else语句中的代码工作起来很有魅力,但有一列具有嵌套属性,这就是问题所在。当我尝试获取嵌套属性的值时,它会给我null异常。你能帮我将代码全球化,这样我的代码中就不会有这个额外的if吗 if (e.SortExpression == "Distribution.Coder.Name") lstActivities = lstActivities.OrderByDescending(o => (string)o.Distribution.Coder.Nam

我试图对对象列表进行排序,else语句中的代码工作起来很有魅力,但有一列具有嵌套属性,这就是问题所在。当我尝试获取嵌套属性的值时,它会给我null异常。你能帮我将代码全球化,这样我的代码中就不会有这个额外的if吗

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();

我只想和你分享我发现的代码。我记不起来了

 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")