나는 LinqKit를 사용하고 있습니다 (http://www.albahari.com/nutshell/linqkit.aspx)런타임에 LINQ 엔터티에서 쿼리 작성 '매개 변수가 범위에 없습니다.' LinqKit
구체적인 클래스를 정의 할 필요없이 다음과 같은 코드가 작동을하는 방법이 있나요?
LINQ to Entities를 사용하여 강력한 형식의 동적 쿼리를 작성하려고합니다.
나는 The parameter 'o' is not in scope.
오류가 발생합니다.
경우에 따라
void Main()
{
var lquery = from a in Foo select new { Bar = a.Baz }; // <-- error like this
//var lquery = from a in Foo select new stuff { Bar = a.Baz }; // <-- here no error
test("Case", lquery, o => o.Bar).Dump();
}
class stuff { public string Bar {get; set;} }
IQueryable<T> test<T>(string val, IQueryable<T> qry, Expression<Func<T, string>> selector){
var ex = selector.Expand();
var b = from c in qry.AsExpandable()
where ex.Invoke(c).Contains(val)
select c;
return b;
}
익명의 클래스가 test()
함께 사용할 때 구체적인 클래스 stuff
가 다음 오류를 사용하지 않을 경우이 오류가 발생 나타납니다. 이 상황에서 익명 클래스를 사용할 수있는 해결 방법이 있습니까?
나는) (이 오류가 관련 LinkKit 될 수도 있지만 내가 거기에 다이빙하기에 충분한 기술적 지식이없는 ...
로
을 relpaced? 또한, 내가 작성할 수없는 질문의 코드를 사용하면,'Main'에서'test'를 호출 할 때 타입 인자를 추론 할 수 없습니다. –
이 코드는 ** LinqPad **와 함께 사용할 수 있습니다. **'Foo'는 테이블 이름으로 바꿀 수 있습니다.'Baz'는 상기 테이블의 열로 바꿀 수 있습니다. ** LinqPad **에서 코드를 실행 중입니다. LinqKit.dll 및 System.Linq.Expressions 및 LinqKit 네임 스페이스에 대한 참조가 필요합니다. – FooUser
감사합니다. LinqPad에서 리필 할 수있었습니다. –