C# 将LINQ to Entities查询中的每个项强制转换为接口的最佳方式是什么?

C# 将LINQ to Entities查询中的每个项强制转换为接口的最佳方式是什么?,c#,linq,linq-to-entities,iqueryable,C#,Linq,Linq To Entities,Iqueryable,我有一个实体对象“User”,它实现了“IUser”: IQueryable<User> users = Db.User; return users; IQueryable用户=Db.User; 返回用户; 但我真正想回报的是: IQueryable<IUser> IQueryable 那么,什么是转化的最佳方式呢 IQueryable<User> IQueryable 到 IQueryable 没有实际运行查询?现在我正在做这件事,但它看起来像

我有一个实体对象“User”,它实现了“IUser”:

IQueryable<User> users = Db.User;
return users;
IQueryable用户=Db.User;
返回用户;
但我真正想回报的是:

IQueryable<IUser>
IQueryable
那么,什么是转化的最佳方式呢

IQueryable<User>
IQueryable

IQueryable
没有实际运行查询?现在我正在做这件事,但它看起来像一个黑客:

IQueryable<IUser> users = Db.User.Select<User, IUser>(u => u);
IQueryable users=Db.User.Select(u=>u);

我觉得你的“黑客”解决方案不错

Craig Stuntz是正确的:L2E不支持Cast方法。If失败:“无法将类型“MyType”强制转换为类型“MySubTypet”。LINQ to Entities仅支持强制转换实体数据模型基元类型。”。我删除了我的答案,因为它没有提供任何值。这不是加载结果吗?对于查询的每个部分,它不会得到整个表?哪个.NET版本?在.NET4中,您应该能够将任何IQueryable分配给IQueryable类型的变量,而不需要强制转换所有条目,即列表…我只是尝试了一下,但有以下例外情况:不支持输入类型为“Bla.User”且检查类型为“Bla.IUser”的“TypeAs”表达式。LINQ to Entities查询中只支持实体类型和复杂类型。感谢您的测试。我会删除替代方案。谢谢Craig的快速回复!
IQueryable<IUser> users = Db.User.Select<User, IUser>(u => u);