如何将List <object>转换为IEnumerable <T>

use*_*989 3 .net c# generics ienumerable

如何返回expected作为IEnumerable<T>给定下面的代码?

public List<object> expected = new List<object>();

public IEnumerable<T> SqlQuery<T>(string sql)
{
    // Return expected as IEnumerable<T>
}
Run Code Online (Sandbox Code Playgroud)

(这是为单元测试创​​建的类,用于模拟实体框架SqlQuery<T>方法.我们可以提前设置我们的预期结果,并让它返回您期望的结果.)

Mic*_*Liu 9

假设expected确实包含类型的实例T,您可以使用LINQ Cast运算符:

public IEnumerable<T> SqlQuery<T>(string sql)
{
    return expected.Cast<T>();
}
Run Code Online (Sandbox Code Playgroud)

如果任何元素的强制转换失败,将抛出InvalidCastException.

  • @VadimMartynov:我认为如果单元测试中存在错误,而不是默默地忽略坏元素,那么爆炸会更好. (5认同)