c# - 类型为 'System.InvalidCastException' 的未处理异常

标签 c# database linq visual-studio-2015

我的 C# VS2015 应用程序抛出此异常:

System.InvalidCastException was unhandled

Message=Unable to cast object of type 'System.Data.Entity.Infrastructure.DbQuery`1[ADONET4LINQtoENTITIES.Customer]' to type 'System.Data.Objects.ObjectQuery'.
Source=ADONET4LINQtoENTITIES

错误发生在定义查询变量的行:

var customers = from c in de.Customers
                where c.Orders.Any(o => o.OrderAmount > 150)
                select c;
 
string query = ((ObjectQuery)customers).ToTraceString();

我的假设是 ObjectQuery 正在提示异常。

我尝试了 string query = ((DbQuery)customers).ToString(),它在 VS2013 中有效,但这导致了同样的异常。

为什么 VS2015 使用这些查询方法会抛出异常?

最佳答案

因为 Customers不是 ObjectQuery你想要的是 ObjectQuery<Customer>所以也删除投影(Select)。

更改为

var CustomersQuery= from c in de.Customers
                    where c.Orders.Any(o => o.OrderAmount > 150);

string query =  CustomersQuery.ToTraceString();

我通过命名 CustomersQuery 消除了命名词汇歧义.

参见 ObjectQuery.ToTraceString Method (System.Data.Objects)获取更多信息。

关于c# - 类型为 'System.InvalidCastException' 的未处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31597539/

相关文章:

c# - 基于类的GUI代码生成

java - 使用 Java 代码向列添加描述

c# - 比较linq中的日期

c# - 使用 Newtonsoft.Json 解析 JSON 时出错

mysql - SQL 语法错误,我没有看到它

c# - 将嵌套的 foreach 循环转换为 LINQ

c# - 在服务之间共享数据

c# - 点在 .net 中的属性

c# - PropertyGrid - 动态加载下拉值

mysql - 使用 JDBC 从任何计算机访问 localhost 数据库