ORMがこれを組み込み関数として持っているかどうかにかかわらず、あなたはリフレクションを使って拡張メソッドとしてこれを自分で行うことができます。
ここでは、VBである:
<Extension()>
Public Function PropertyName(Of T, TProperty)(ByVal targetObject As T, ByVal expression As Expression(Of Func(Of T, TProperty))) As String
Return DirectCast(expression.Body, Expressions.MemberExpression).Member.Name
End Function
だから、これはあなたのような何か与える:拡張メソッドがインスタンス上にあるため
myControl.DataSource = source
myControl.DataTextField = source.First().PropertyName(Function(x) x.SomeColumn1)
myControl.DataValueField = source.First().PropertyName(Function(x) x.SomeColumn2)
myControl.DataBind()
(私はsource.First()を使用していますがクラスではなく、インスタンスのコレクション)
のそして私はあなたのオリジナルのポストは、C#である点に注意してください。
[Extension()]
public string PropertyName<T, TProperty>(T targetObject, Expression<Func<T, TProperty>> expression)
{
return ((Expressions.MemberExpression)expression.Body).Member.Name;
}
そして
myControl.DataSource = source;
myControl.DataTextField = source.First().PropertyName(x => x.SomeColumn1);
myControl.DataValueField = source.First().PropertyName(x => x.SomeColumn2);
myControl.DataBind();
が再タグ価値があるかもしれません、質問はEFについては、厳密ではないでしょうか? – RichardW1001