C# 如何铸造IQueryable<;T>;至DbSet<;T>;? 公共数据库集项目 { 得到 { 返回dbContext.Item.Where(x=>x.Id==Id)。选择(x=>x) } }
上述代码导致编译错误: 无法将类型“System.Linq.IQueryable”隐式转换为。。。DbSet.C# 如何铸造IQueryable<;T>;至DbSet<;T>;? 公共数据库集项目 { 得到 { 返回dbContext.Item.Where(x=>x.Id==Id)。选择(x=>x) } },c#,entity-framework,linq,C#,Entity Framework,Linq,上述代码导致编译错误: 无法将类型“System.Linq.IQueryable”隐式转换为。。。DbSet. 存在显式转换(是否缺少强制转换?) 添加显式强制转换后: public DbSet<Item> Items { get { return dbContext.Item.Where(x => x.Id == id).Select(x=>x) } } 公共数据库集项目 { 得到 { return(DbSet)(d
存在显式转换(是否缺少强制转换?) 添加显式强制转换后:
public DbSet<Item> Items
{
get
{
return dbContext.Item.Where(x => x.Id == id).Select(x=>x)
}
}
公共数据库集项目
{
得到
{
return(DbSet)(dbContext.Item.Where(x=>x.Id==Id)。选择(x=>x))
}
}
发生运行时错误:
其他信息:无法将类型为“Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable”1[Item]”的对象强制转换为类型为“Microsoft.EntityFrameworkCore.DbSet”1[Item]”的对象
有什么想法吗?查询的结果根本不是
DbSet
。为什么不将您的属性返回类型更改为IQueryable
?(当你在做的时候,移除。选择(x=>x)
-它没有为你做任何事情。)不能将某个东西转换成类型x通常是某个东西不是该类型x的标志。当运行时告诉你它不能这样做时,你为什么不相信它呢?好的,谢谢你的回答。@戳出消息“存在显式转换”充其量是令人困惑的。它自然会导致尝试进行显式转换。然后失败,并显示更清晰的错误消息。
public DbSet<Item> Items
{
get
{
return (DbSet<Item>)(dbContext.Item.Where(x => x.Id == id).Select(x => x))
}
}