“System.InvalidCastException”类型的未处理异常

时间:2015-07-23 20:35:27

标签: c# database linq visual-studio-2015

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

  

System.InvalidCastException未处理

     

消息=无法投射   对象类型   'System.Data.Entity.Infrastructure.DbQuery`1 [ADONET4LINQtoENTITIES.Customer]'   输入'System.Data.Objects.ObjectQuery'   源= 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会使用这些查询方法抛出异常?

1 个答案:

答案 0 :(得分:2)

因为var itemMaybe = list.PickRandomMaybe(); if (itemMaybe.HasValue) { ... } 不是Customers所需要的是ObjectQuery,所以也要移除投影(ObjectQuery<Customer>)。

更改为

Select

我通过命名var CustomersQuery= from c in de.Customers where c.Orders.Any(o => o.OrderAmount > 150); string query = CustomersQuery.ToTraceString(); 来找出命名词汇歧义。

有关详细信息,请参阅ObjectQuery.ToTraceString Method (System.Data.Objects)