我是Linq的新手,也是表達式樹的初學者。動態Linq where子句拋出OutOfMemoryException
我有建立一個簡單的LINQ where子句,我發現在一個通用表達式例程:
https://www.simple-talk.com/dotnet/net-framework/dynamic-linq-queries-with-expression-trees/
public Func<TSource,bool> SimpleFilter<TSource> (string property, object value)
{
var type = typeof(TSource);
var pe = Expression.Parameter(type, "p");
var propertyReference = Expression.Property(pe,property);
var constantReference = Expression.Constant(value);
var ret = Expression.Lambda<Func<TSource, bool>>
(Expression.Equal(propertyReference, constantReference), new[] { pe });
return ret.Compile();
}
當我調用該函數作爲SimpleFilter("JobCustomerID", 449152)
它 收率(p => p.JobCustomerId == 449152)
這是正確的。
如果我手動將該條件放在我的Linq語句中,我會得到正確的返回值。
var jj = db.VW_Job_List.Where((p => p.JobCustomerId == 449152));
但是,當通過過濾函數調用時,Linq會拋出OutOfMemoryException
。 這就是所謂的我的應用程序爲:
var jj = db.VW_Job_List.Where(SimpleFilter<VW_Job_List>("JobCustomerID", 449152));
如果我把一個文本的標準功能,它返回正確:
var jj = db.VW_Job_List.Where(SimpleFilter<VW_Job_List>("CompanyCode", "LCS"));
是否有一些具體的事情有關使用必須是一個整型變量容納?我有不正確的編碼嗎?任何想法或見解將不勝感激。
所以你查詢數據庫?如果是,VW_Job_List表中有多少行? – Evk