【问题标题】:Dynamic Linq Select -How to extract the resultsDynamic Linq Select - 如何提取结果
【发布时间】:2014-03-20 13:17:02
【问题描述】:

我有一个动态的 Linq Select 形式的语句

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

这可以正常工作并生成匿名类型的 IQueryable。

但是我无法将其转换为 IEnumerable 以在其上使用 linq,因为 AsEnumerable 方法似乎丢失了。最后我不得不使用反射来提取字段值

一定有更好的方法 - 任何帮助都会很棒

谢谢

【问题讨论】:

  • 这是因为要选择的列直到运行时才知道。选择返回一个 IQueryable 并且其中的值是正确的。但我无法访问结果,除非使用反射。我无法将 Iqueryable 转换为 Ienumerable
  • 这是动态 Linq - 你需要使用 System.Linq.Dynamic

标签: linq dynamic-linq


【解决方案1】:

你可以试试这样的

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<dynamic>().AsEnumerable();

【讨论】:

    猜你喜欢
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多