我的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会使用这些查询方法抛出异常?
答案 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)。