Независимо от того, имеет ли 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();