1
爲什麼...LINQ2SQL和lambda收益 「方法 'System.Object的DynamicInvoke(System.Object的[])' 有沒有支持轉換爲SQL」
Func<IQueryable<CampaignCodePaths>> table =() => CampaignCodePaths;
Func<CampaignCodePaths, int> propertySelector = e => e.Id;
int key = 1;
Func<CampaignCodePaths, bool> whereSelector = e => propertySelector(e).Equals(key);
table().Where(whereSelector).FirstOrDefault();
...工作,但...
Func<IQueryable<CampaignCodePaths>> table =() => CampaignCodePaths;
Func<CampaignCodePaths, int> propertySelector = e => e.Id;
int key = 1;
table().Where(e => propertySelector(e).Equals(key)).FirstOrDefault();
...返回例外:
方法 'System.Object的DynamicInvoke(System.Object的[])' 有沒有支持轉換爲SQL
?
UPDATE
澄清:
CampaignCodePath Get(Func<IQueryable<CampaignCodePaths>> table, Func<CampaignCodePaths, int> selector, int key)
{
return table().Where(/*How to I create this expression from selector and key? */).FirstOrDefault();
}
...
Get(() => CampaignCodePaths, e => e.Id, 1)
好,感謝察覺的!你能解釋一下我可以如何使用Expression嗎? –
@Niels:已經稍微更新了答案 - 你應該可以放下。 –
唯一的問題是過濾器是在其他地方定義的。關鍵是需要動態地「綁定」到文件管理器。有可能做一些咖喱魔法嗎? –