Cannot implicitly convert type 'System.Linq.IQueryable
本文关键字:System Linq IQueryable implicitly convert type Cannot | 更新日期: 2023-09-27 18:03:27
当我输入以下代码时,我收到这个错误:
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>
对象(因为tblOrders
是DbQuery<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);