繁体   English   中英

数组的Lambda绑定表达式

[英]Lambda Binding Expression for Array

我目前正致力于使用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完成了如下所示,

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;} }

以上是我想要实现的场景。 对于简单的情况,我能够做到这一点,但我正在努力绑定到集合。

我希望我的问题有足够的描述。 如果您需要更多信息,请回复。 任何指针都会有所帮助。

问题是您尝试将IEnumerable<B>类型的值推送到类型为IEnumerable<RuntimeType2>的属性中。 您必须使用嵌套选择(必须使用Expression API创建以调用Enumerable.Select方法)在两者之间进行转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM