![](/img/trans.png)
[英]How to convert IEnumerable<IEnumerable<T>> to List<string>?
[英]How to convert List<object> to IEnumerable<T>
如果给出下面的代码,我如何返回expected
IEnumerable<T>
?
public List<object> expected = new List<object>();
public IEnumerable<T> SqlQuery<T>(string sql)
{
// Return expected as IEnumerable<T>
}
(这是为单元测试创建的类,用于模拟Entity Framework SqlQuery<T>
方法。我们可以提前设置我们的预期结果,并让它返回您期望的结果。)
假设expected
实际上包含类型T
实例,您可以使用LINQ Cast运算符:
public IEnumerable<T> SqlQuery<T>(string sql)
{
return expected.Cast<T>();
}
如果任何元素的强制转换失败,将抛出InvalidCastException。
如果您有一个包含许多子类型的列表,并且您只想返回特定的子类型,您还可以执行以下操作:
public IEnumerable<T> SqlQuery<T>(string sql)
{
return expected.OfType<T>();
}
在这种情况下,假设您有一个Person
类,它是Cops
和Robbers
的基类。
如果你喜欢你的收藏中的所有“人”,你可以写: OfType<Person>
但是,如果您只想要收藏中的劫匪,请使用OfType<Robbers>
如果您要求在OfType<Footballer>
等expected
集合中不存在的类型,则将返回空集合。
最好使用LINQ Cast运算符转换为所需的IEnumerable。
public IEnumerable<T> SqlQuery<T>(string sql)
{
return expected.Cast<T>();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.