带有List的DynamicObject LINQ查询编译正常:
List<string> list = new List<string>();
var query = (from dynamic d in list where d.FirstName == "John" select d);
使用我们自己用于“通常”LINQ编译器的自定义类报告错误“表达式树可能不包含动态 操作“:
DBclass db = new DBclass(); var query =(来自db中的动态d,其中d.FirstName ==“John”选择d);
我们应该添加什么来处理DynamicObject LINQ?
答案 0 :(得分:1)
DBClass是否实现IEnumerable?也许有一个方法,你应该调用返回IEnumerable集合?
答案 1 :(得分:0)
您可以添加一个类型,用于编写查询。
答案 2 :(得分:0)
我相信你的问题是,在你使用List&lt;&gt;的第一个表达式中,所有内容都是在内存中使用IEnumerable&amp;链接到对象。
显然,您的DBClass
是使用Linq-to-SQL的IQueryable。 IQueryables使用表达式树来构建要发送到数据库的SQL语句。
换句话说,尽管看起来很相似,但这两个陈述的做法完全不同,其中一个是允许的。一个不是。 (var y = x * 5;
要么成功要么失败,具体取决于x
是int还是字符串。
此外,您的第一个示例可能会编译,但据我所知,它会在您运行时失败。这不是成功的特别好基准。
我看到这个工作的唯一方法是使用链接到对象在IEnumerables上进行使用dynamic
的查询。 (将整个表加载到List中,然后在列表中查询)