3

how can I return the SQL from a LinqKit.ExpandableQuery<T>?
I'm using the code from stevefenton.co.uk but it seems to fail at

private static System.Data.Entity.Core.Objects.ObjectQuery<T> GetQueryFromQueryable<T>(IQueryable<T> query)
        {
            var internalQueryField = query.GetType().GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).Where(f => f.Name.Equals("_internalQuery")).FirstOrDefault();
            var internalQuery = internalQueryField.GetValue(query);
            var objectQueryField = internalQuery.GetType().GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).Where(f => f.Name.Equals("_objectQuery")).FirstOrDefault();
            return objectQueryField.GetValue(internalQuery) as System.Data.Entity.Core.Objects.ObjectQuery<T>;
        }

with the internalQueryField being null.

It has something to do with the inheritance tree (LinqKit + Linq), but I can't get my head around it.. :(

grmbl
  • 2,514
  • 4
  • 29
  • 54

1 Answers1

4
string sql = query.ToString();
Ashkan Mobayen Khiabani
  • 33,575
  • 33
  • 102
  • 171