动态Linq选择-如何提取结果

动态Linq选择-如何提取结果,linq,dynamic-linq,Linq,Dynamic Linq,我有一个表单的动态Linq Select语句 var projection = result.AsQueryable().Select(string.Format("new({0},{1})", model.XtabRow, model.XtabColumn)); 这可以很好地工作,并生成匿名类型的IQueryable 然而,我无法将其转换为IEnumerable以在其上使用linq,因为似乎缺少一个可计算的方法。最后我不得不使用反射来提取字段值 一定有更好的办法——任何帮助

我有一个表单的动态Linq Select语句

var projection = result.AsQueryable().Select(string.Format("new({0},{1})",
         model.XtabRow, model.XtabColumn));
这可以很好地工作,并生成匿名类型的IQueryable

然而,我无法将其转换为IEnumerable以在其上使用linq,因为似乎缺少一个可计算的方法。最后我不得不使用反射来提取字段值

一定有更好的办法——任何帮助都会很好


谢谢你可以试试这样的东西

var projection = result.AsQueryable().Select(string.Format("new({0},{1})",
     model.XtabRow, model.XtabColumn));

var enumerableProjection = (from dynamic p in projection select p).AsEnumerable();

var projection=result.AsQueryable().Select(string.Format(“new({0},{1})”,
model.XtabRow,model.XtabColumn));
var enumerableProjection=projection.Cast().AsEnumerable();

这是因为要选择的列直到运行时才知道。select返回一个IQueryable,其中的值是正确的。但我无法访问结果,除非使用反射。我无法将IQueryable转换为IenumerableThis is Dynamic Linq-您需要使用System.Linq.Dynamic
var projection = result.AsQueryable().Select(string.Format("new({0},{1})",
     model.XtabRow, model.XtabColumn));

var enumerableProjection = projection.Cast<dynamic>().AsEnumerable();