我目前正在使用 Lambda 表达式编写动态选择子句,并停留在必须处理嵌套集合的地方。例如
class A
{
public string Property1 {get;set;}
public string Property2 {get;set;}
public IEnumerable<B> Property3 {get;set;}
}
class B
{
public string Prop1 {get;set;}
public int Prop2 {get;set;}
}
如上所示,我有 A 类和 B 类,并且我得到了 A 的集合,但是由于 A 中的这些数据将绑定到网格,因此不需要所有属性。它像视图依赖。视图定义要显示的字段。因此,我正在动态创建对象并向其添加所需的属性。这是我使用 Lambda 表达式完成的,如下所示,
Expression.Bind(p, Expression.PropertyOrField(entityExpression, p.Name))
如果我必须从类 A 中仅选择 Property1 和 Property2,则此方法有效,但是如果我想要作为集合的 Property3,它将不起作用,因为我正在动态创建类型并只是向其添加所需的属性。因此在运行时我会有这样的场景
IEnumerable<RuntimeType2> => RuntimeType2 { string Prop1 {get;set; }
IEnumberable<RuntimeType1> =>
RuntimeType1 { string Property1 {get;set;
IEnumerable<RuntimeType2> Property3 {get;set;} }
以上是我想要实现的场景。对于简单的情况,我可以做到这一点,但是我正在努力绑定到集合。
我希望我的问题有足够的描述。如果您需要更多信息,请回复。任何指针都会有所帮助。