При использовании встроенной сортировки в GridView с Entity Framework я могу отображать значения внешнего ключа. Например ...
<asp:boundfield HeaderText="Category" DataField="Category.Name" SortExpression="Category.Name" />
... но когда щелкнуть заголовок, чтобы отсортировать элементы в сетке, как я могу отсортировать свой список по категориям.
У меня есть только строка «Category.Name», поэтому я не могу сделать это:
.OrderBy( e => e.Category.Name )
Итак, я попробовал Reflection ...
private static object GetPropertyValue( object obj, string propertyName )
{
PropertyInfo propertyInfo = obj.GetType().GetProperty( propertyName );
return propertyInfo.GetValue( obj, null );
}
// list is List<Widget>
// with a breakpoint here, ((Widget)list[i]).Companies.Name exists in all Widgets
list.OrderBy( e => GetPropertyValue( e, "Category.Name" ) )
... который не работает. Не генерируется исключение, но он не сортируется по Category.Name.
Есть идеи?