저는 Linq의 초보자이고 표현식 트리를 가진 진정한 초보자입니다. 동적 Linq where 절이 OutOfMemoryException을 던졌습니다.
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();
}
내가 함수를 호출
https://www.simple-talk.com/dotnet/net-framework/dynamic-linq-queries-with-expression-trees/
(p => p.JobCustomerId == 449152)
그것을 수익률
SimpleFilter("JobCustomerID", 449152)
으로 올바른이다 :
이 난에서 발견 절 곳 간단한 Linq에를 구축하는 일반적인 표현 루틴이있다.
Linq 문에 해당 조건을 수동으로 배치하면 올바른 반환 값을 얻을 수 있습니다.
그러나 필터 함수를 통해 호출 될 때 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