2013-04-16 4 views
0

Скажем, у меня есть запрос, который выбирает в определенный тип, как так:Dynamic LINQ не смог разобрать приказывать

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", я пр ompted с исключением:

Нет свойств или поля «SomeDate» существует в типа «MyType»

Теперь, когда я просто добавить заказ в синтаксисе метода для запроса:

query = query.OrderBy(x => x.SomeDate) 

или

query = query.OrderBy(x => x.Object1.CreatedDate) 

Все работает, так что я думаю, что это может быть либо ошибка в DynamicLinq или я называю это неправильным ...

Любые идеи?

+0

отправьте свой динамический код linq ... –

ответ

3

Динамический линк сильно использует отражение. Возможно, это проблема, потому что ваши свойства отмечены как internal, а метод <Type>.GetProperty (который будет использоваться библиотекой Dynamic Linq) не будет отслеживать свойства internal, если не будет адаптирован BindingFlags.

Дайте ему попробовать пометить их как public, так и ваш класс.

Смежные вопросы