I는이 방법이있다. 내 문제는 작동하지 않는다는 것입니다. Equals 호출의 일부로 someId를 실제 값으로 바꾸면 작동합니다. 그러나 위의 메서드에 동일한 값을 전달하면 작동하지 않습니다.발현 및 파라미터
someId 매개 변수는 표현식이 실제로 사용될 때까지 평가되지 않으므로 실제 값을 포함하지 않습니다. 죄송합니다. 조금 혼란스러워합니다.
감사
업데이트 :
PARAM 하드
.Lambda #Lambda1<System.Func`2[MyEntity,System.Boolean]>(MyEntity $t) {\r\n .Call ($t.SomeProperty).Equals(\"test1\")
작동하지 않습니다 하나 일부 디버그 정보 코딩 작업을 수행하는 하나 일부 디버그 정보 값은 메소드에 전달됩니다.
.Lambda #Lambda1<System.Func`2[MyEntity,System.Boolean]>(MyEntity $t) {\r\n .Call ($t.SomeProperty).Equals(.Constant<MyEntity+<>c__DisplayClass4>(MyEntity+<>c__DisplayClass4).someId)
값이 하드 코딩되지 않은 경우 표현식에 존재하지 않는 참조가있는 것 같습니까? 미안, 여기에 무슨 일이 일어나고 있는지 혼란에 빠지다!
업데이트 2 :
가 사용되는 곳입니다 - 저장소 클래스의 메소드가 :
:public MyEntity Get(string someId)
{
var queryPredicate = MyEntity.MyMethod(someId);
var foundEntity = this.Query(queryPredicate);
}
쿼리는 다음과 같이 저장소 기본 클래스의 방법이다
public IEnumerable<TEntity> Query(Expression<Func<TEntity, bool>> predicate)
{
if (predicate == null)
{
throw new ArgumentNullException("predicate");
}
using (var context = new TContext())
{
return context.CreateObjectSet<TEntity>().AsExpandable().Where(predicate).ToList();
}
}
가 해결되는지
가http://www.albahari.com/nutshell/linqkit.aspx
그것에서 살펴보고 참조 이 결과를 사용하려는 코드를 표시 하시겠습니까? –