我用下面的方法來從任何其他對象創建SelectListItem對象獲取屬性的全名:如何從一個lambda
public static SelectListItem ToSelectListItem<T, TResult, TResult2>(T obj, Expression<Func<T, TResult>> value, Expression<Func<T, TResult2>> text)
{
string strValue = String.Empty;
string strText = String.Empty;
if (value != null)
strValue = (value.Body as MemberExpression).Member.Name;
if (text != null)
strText = (text.Body as MemberExpression).Member.Name;
...
}
我用這個方法是這樣的:
SelectListItem item = ToSelectListItem(obj, x => x.ID, x => x.Name);
它工作正常。然而,當我從一個相關聯的對象指定屬性我得到的是財產
SelectListItem item = ToSelectListItem(obj, x => x.ID, x => x.Profile.Name);
屬性名稱我能夠從得到的名字「X => x.Profile.Name」只'名字',我真正想得到的是'Profile.Name'。
任何建議,將不勝感激。
可能重複的[C#:從lambda表達式獲取鏈中的屬性的名稱](http://stackoverflow.com/questions/1667408/c-getting-names-of-properties-從lambda表達式) – nawfal 2013-04-27 16:32:57