我有一个DataClassesDataContext
包含一组表,我试图做lambda expression
动态过滤使用只有表的名称和字段的名称。基本上我想为每个表找到一个具有特定ID的行是否已经存在。SingleOr的动态lambda表达式默认
如果我知道时间提前的表,我会用:
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();
任何想法?
您可以用[表达式](HTTPS构建它们: //msdn.microsoft.com/en-us/library/system.linq.expressions.expression%28v=vs.110%29.aspx)类,允许您在运行时动态构建表达式 –