2010-08-06 12 views
0

J'utilise ce dynamic LINQ library avec Linq-to-Entities.
Je construis requête et après itérer avec foreach(object e in query){}Est-ce que GroupBy dynamique fonctionne avec dynamique Où LINQ dynamique?

query=db.Table1.Where("it.FieldA>10").Select("it.FieldB"); œuvres.
query=db.Table1.Where(e=>e.FieldA>10).GroupBy("it.FieldB", "it").Select("key") fonctionne.
Mais query=db.Table1.Where("it.FieldA>10").GroupBy("it.FieldB", "it").Select("key") provoque EntitySqlException avec le message The query syntax is not valid., near keyword 'FROM', line 2, column 1. en ligne avec l'instruction foreach.

Comment puis-je le faire fonctionner sans exception?

Notez que le type de db.Table1.Where(e=>e.FieldA>10) est IQueryable<Table1>, mais que le type db.Table1.Where("it.FieldA>10") est System.Data.Objects.ObjectQuery<Table1>.

Répondre

0

Trouvé, db.Table1.AsQueryable() l'a corrigé, donc db.Table1.AsQueryable().Where("it.FieldA>10").GroupBy("it.FieldB", "it").Select("key") fonctionne sans exception.

Le problème était que la bibliothèque Microsoft Dynamic Linq s'étend IQueryable<Table1>, donc elle ne prend pas effet sur ObjectQuery<Table1> qui est le type de db.Table1.