【发布时间】:2016-11-23 15:44:25
【问题描述】:
我创建了一个应用程序,用户可以在其中指定对数据库的查询,甚至可能是不同的数据库。他们希望能够根据用户指定的条件将两个查询结果(存储在 DataTables 中)连接在一起。
用户在 XML 设置文件中指定连接条件,如下所示:
<Join Name="join_example" TableAName="tbl_example1" TableBName="tbl_example2" Expression="a.ID == b.ID" />
到目前为止,我已将 DataTables 转换为动态列表,因此列名现在是属性,但在尝试使用这些属性创建 DynamicExpression 时出现以下错误:
{"类型'List`1'中不存在属性或字段'ID'"}
有什么想法可以创建动态表达式吗?我对执行连接的其他方式持开放态度,但希望用户能够使用 XML 中指定的语法。这是我产生错误的代码。
List<dynamic> TableA = ToDynamicList(DataTableA);
List<dynamic> TableB = ToDynamicList(DataTableB);
ParameterExpression paramA = System.Linq.Expressions.Expression.Parameter(TableA.GetType(), "a");
ParameterExpression paramB = System.Linq.Expressions.Expression.Parameter(TableB.GetType(), "b");
Expression Exp = System.Linq.Dynamic.DynamicExpression.Parse(new ParameterExpression[] { paramA, paramB }, TableA.GetType(), this.Expression, new List<dynamic>[] { TableA, TableB });
【问题讨论】:
标签: c# linq join dynamic datatable