![](/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.