2
我使用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相關,但我沒有足夠的技術知識在那裏潛水......
'Foo'是如何定義的?另外,在問題中的代碼無法再現時,無法從'Main'調用'test'的類型參數。 –
此代碼可以與** LinqPad **一起使用**'Foo'可以替換爲一個表名'Baz'可以替換爲表中的一列。我在** LinqPad中運行代碼**工作正常,需要LinqKit.dll和'System.Linq.Expressions'和'LinqKit'命名空間的引用。 – FooUser
謝謝,這是有道理的,我設法在LinqPad再現。 –