繁体   English   中英

无法将类型'System.Linq.IQueryable'隐式转换为'System.Data.Entity.Infrastructure.DbQuery'

[英]Cannot implicitly convert type 'System.Linq.IQueryable' to 'System.Data.Entity.Infrastructure.DbQuery'

当我输入以下代码时,我会收到此错误:

var rec = (bNoTracking ? tblOrders.AsNoTracking() : tblOrders);
...
...
...
//error on next line: Cannot implicitly convert type 'System.Linq.IQueryable<LocalDB.tblOrder>' to 'System.Data.Entity.Infrastructure.DbQuery<LocalDB.tblOrder>'. An explicit conversion exists (are you missing a cast?)
rec = rec.Where(x => (x.WarehouseId == iWarehouseId) && (x.OrderId == iOrderId));

知道如何解决吗?

谢谢 :)

rec变量被隐式键入为DbQuery<tblOrder>对象(因为tblOrdersDbQuery<tblOrder>对象,而DbQuery<T>.AsNoTracking返回相同类型的对象)。

因此,您的var声明在编译器中看起来像这样:

DbQuery<tblOrder> rec = (bNoTracking ? tblOrders.AsNoTracking() : tblOrders);

但是,仅将Where定义为返回IQueryable<T>对象,该对象不一定适合作为DbQuery<tblOrder>对象。

显式键入rec变量应该可以避免这些问题:

IQueryable<tblOrder> rec = (bNoTracking ? tblOrders.AsNoTracking() : tblOrders);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM