如何使用Expression在linq查询上创建动态选择

时间:2014-04-29 00:07:32

标签: c# linq

假设我有几个这样的课程:

public class QueryDetail
{
  public string Name { get; set; }
  public Expression<Func<MyObject, object>> IdToMapOn { get; set; }
}

public class MyObject
{
  public string FooId { get; set; }
  public string BarId { get; set; }
}

如何过滤以下查询:

(f, l) => 
{ 
  return f.RecordCollection.Select(l.IdToMapOn); // how do I use that expression?
}
  • 其中f.RecordCollectionIEnumerable
  • 类型的MyObject
  • lQueryDetail

1 个答案:

答案 0 :(得分:1)

需要编译表达式。见Expression Class

(f, l) => 
{ 
    var compiled = l.IdToMapOn.Compile();
    return f.RecordCollection.Select(compiled.Invoke);
}