【发布时间】:2015-05-04 11:39:27
【问题描述】:
我有一个包含一组表的DataClassesDataContext,我正在尝试仅使用表的名称和字段的名称动态地进行lambda expression 过滤。基本上我想为每个表查找是否已经存在具有特定 ID 的行。
如果我提前知道这张桌子,我会使用:
if (dataClassesDataContext.MYTABLEXs.SingleOrDefault(m => m.MYTABLEX_ID == MyId))
DoExists();
但是当我将表名 MYTABLEX 和 MYTABLEY(以及字段名 MYTABLEX_ID 和 MYTABLEY_ID)作为字符串时,我试图在运行时构建上述过滤器。
我可以使用动态访问表格:
Type tableType = Type.GetType(incommingtableName); // incommingtableName being looped over MYTABLEX, MYTABLEY , ...
var dbTable = dataClassesDataContext.GetTable(tableType);
但后来我被困住了。如何构建一个 lambda 表达式,其行为类似于:
if (dbTable.SingleOrDefault(m => m.incommingtableName_id == MyId))
DoExists();
有什么想法吗?
【问题讨论】:
-
您可以使用Expression 类构建它们,该类允许您在运行时动态构建表达式
标签: c# linq lambda linq-expressions