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

时间:2013-02-05 12:41:41

标签: c# linq c#-4.0

是否有可能得到这样的东西:

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

其中B派生自A为接口工作(即获取实现特定接口的所有对象)?感谢。

1 个答案:

答案 0 :(得分:1)

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

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

或者:

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

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