我有以下代碼:LINQ動態凡 - 不增加條款
public OTestTable GetTestCode(Func<TestTable, bool> whereClause)
{
return CoreContext.TestTables.Where(whereClause).Select(TestTableMap.DataToObject).FirstOrDefault();
}
CoreContext是
我TestTableMap如下我的數據上下文(在基類初始化):
public class TestTableMap
{
public static readonly Func<TestTable, OTestTable> DataToObject = mapper =>
new OTestTable
{
Code = mapper.mycode
};
}
然後在我的商業方法,我有以下幾點:
public OTestTable GetTestCode(string code)
{
return QueryEngine.GetTestCode(id => id.mycode == code);
}
從我的主程序中,我使用字符串值調用GetTestCode。
當我看SQL事件探查器,我得到如下:
SELECT [t0].[mycode]
FROM [dbo].[TestTable] AS [t0]
它不必附加到SQL查詢的WHERE子句。如果我將where子句添加到LINQ中作爲var query = from DataContext.TestTable其中c.mycode ==''select c;
它會添加where子句。但是,當我運行我的代碼時,它將返回正確的記錄,但它好像是從數據庫中撤回所有記錄並在代碼中進行篩選(不應該發生這種情況)。
任何想法與我做錯了什麼?
謝謝
那就是它!我完全忘記了使用Expression!謝謝一堆! – CodeLikeBeaker 2009-11-30 20:02:52