我有一個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)類,允許您在運行時動態構建表達式 –