Digamos que tengo una consulta que selecciona un tipo definido de esta manera:
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
}
Ahora hacemos DynamicLinq para agregar dinámicos, definidos por el usuario, ordenar en el conjunto de resultados, así:
query.OrderBy("SomeDate");
o
query.OrderBy("Object1.CreatedDate");
pero cuando trato de ordenar, por ejemplo, "SomeDate" u "Object1.CreatedDate", aparece una excepción:
No existe ninguna propiedad o campo 'SomeDate' en el tipo 'MyType'
Ahora, cuando acabo de agregar el orden en la sintaxis del método a la consulta:
query = query.OrderBy(x => x.SomeDate)
o
query = query.OrderBy(x => x.Object1.CreatedDate)
Todo funciona, así que creo que esto podría ser un error en DynamicLinq o lo estoy llamando mal ...
¿Algunas ideas?
Dynamic Linq hace un uso intensivo de Reflection. Tal vez sea un problema porque sus propiedades están marcadas como internal
y el método <Type>.GetProperty
(que será utilizado por la biblioteca Dynamic Linq) no buscará propiedades internal
menos que BindingFlags
se adapte.
Intente marcarlos como públicos y su clase también.