如何获取以下集合以返回原始类型?

时间:2013-04-30 07:38:53

标签: c# linq entity-framework

我有以下方法,我将其转换为ICloseable以公开我想要检查的属性。

问题是返回类型现在是一组类型ICloseable

有没有办法检查T是否关闭,而不返回ICloseable类型的一组?

if (typeof(ICloseable).IsAssignableFrom(typeof(T)))
{
    return base.Set<T>().Where(n => !((ICloseable)n).Closed);
}

1 个答案:

答案 0 :(得分:1)

由于IQueryable<T>在T中是协变的,您可以尝试:

if (typeof(ICloseable).IsAssignableFrom(typeof(T)))
{
    IQueryable<ICloseable> closeables = (IQueryable<ICloseable>) base.Set<T>();
    return closeables.Where(n => !n.Closed).Cast<T>();
}

我不知道Cast肯定会起作用,但值得一试。