Linq获取所有实现接口的对象

本文关键字:接口 对象 实现 获取 Linq | 更新日期: 2023-09-27 17:57:37

有可能得到这样的东西吗:

return Session.Query<A>().Where(x => x is B).ToList();

其中B从为接口工作的A派生(即获取实现某个接口的所有对象)?谢谢

Linq获取所有实现接口的对象

您不能直接将此语句转换为SQL。首先,您必须评估查询或使用AsEnumerable()

return Session.Query<A>().AsEnumerable().Where(x => x is B).ToList();

或者:

return Session.Query<A>().AsEnumerable().OfType<B>().ToList();

AsEnumerable之后的部分将在内存中执行。