如果我尝试将动态类型值传递到 Entity Framework linq 查询中,则会收到此错误。
dynamic sname = "suraj"; // even object, var
AppUser appUser = Ctx.AppUsers.First(u => u.Name == sname);
如果我尝试首先将值存储在字符串中并使用它,我得到 “对象引用错误”。
var name = "suraj";
string sname = new string(((string)name).ToCharArray());
AppUser appUser = Ctx.AppUsers.First(u => u.Name == sname);
最佳答案
看看DLINQ它允许您执行以下操作:
var query =
db.Customers.
Where("City = @0 and Orders.Count >= @1", "London", 10).
OrderBy("CompanyName").
Select("new(CompanyName as Name, Phone)");
请注意,查询中的表达式是可以在运行时动态构造的字符串。
该库有一些非常非常好的功能,包括到表达式树的隐式转换,您将能够顺利地将其集成到现有的表达式树中。
(当你回想起 2006 年左右编写的 DLINQ 时,它是非常令人惊奇的,并且仍然处于 C# 技术进步的前沿;Download included in the \LinqSamples\DynamicQuery directory here )
关于.net - 表达式树不能包含动态操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5614574/