Скажем, у меня есть запрос, который выбирает в определенный тип, например, так:
public class SomeObject
{
public DateTime CreatedDate { get; set; }
}
private class MyType
{
internal SomeObject Object1 { get; set; }
internal SomeThing Object2 { get; set; }
internal DateTime SomeDate { get; set; }
}
var query = from bla in context.Melp join .....
select new MyType()
{
Object1 = something,
Object2 = somethingelse,
SomeDate = bla.date
}
Теперь мы DynamicLinq добавляем динамический, определенный пользователем, сортировку по результирующему набору, вот так:
query.OrderBy("SomeDate");
или
query.OrderBy("Object1.CreatedDate");
но когда я пытаюсь заказать, например, «SomeDate» или «Object1.CreatedDate», мне выдается запрос с исключением:
Нет свойства или поля «SomeDate» в типе «MyType»
Теперь, когда я просто добавляю синтаксис метода в запросе:
query = query.OrderBy(x => x.SomeDate)
или
query = query.OrderBy(x => x.Object1.CreatedDate)
Все работает, поэтому я думаю, что это может быть либо ошибка в DynamicLinq, либо я называю это неправильно ...
Любые идеи?
Dynamic Linq активно использует Reflection. Возможно, это проблема, потому что ваши свойства помечены как internal
и метод <Type>.GetProperty
(который будет использоваться библиотекой Dynamic Linq) не будет отслеживать internal
свойства, если не будет адаптирован BindingFlags
.
Попробуйте пометить их как публику, так и ваш класс.