簡體   English   中英

如何轉換List <object> 到IEnumerable <T>

[英]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類,它是CopsRobbers的基類。

如果你喜歡你的收藏中的所有“人”,你可以寫: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM