我有一個名爲ItemChange<T>
類,看起來像這樣:我如何連接兩個不同的列表<T>哪裏都有相同的基類?
public class ItemChange<T> where T : MyBase
{
public DateTime When { get; set; }
public string Who { get; set; }
public T NewState;
public T OldState;
}
正如你可以看到它存儲的對象(NewState
和OldState
)的兩個副本。我用它來比較字段的變化。
我現在試圖讓這幾個不同類型的牛逼名單的工作,在那裏我得到跨越多個對象的更改的列表,然後連接成一個陣列是這樣的(注:兩個Object1
和Object2
從MyBase
得出:
public IEnumerable<ItemChange<T>> GetChangeHistory<T>(int numberOfChanges) where T : MyBase
{
IEnumerable<ItemChange<Object1>> obj1Changes= GetChanges<Object1>();
IEnumerable<ItemChange<Object2>> obj1Changes= GetChanges<Object2>();
return obj1Changes.Concat(obj2Changes).OrderByDescending(r => r.When).Take(numberofChanges);
}
正如你可以看到我需要連接多個類型的變化,但後來我想抓住最新的變動數(由numberOfChanges
定義)
對我怎麼能拿下面的工作有什麼建議正如Concat系列給我的ompiler錯誤(我假設我必須以某種特殊的方式來實現此功能)。
有沒有辦法做到這一點?
請參閱[「堆棧溢出不允許標題在標題中」](http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles/130208#130208) 。 –
您是否嘗試投射到'(IEnumerable>)obj2Changes'? –
Alex
也許是這樣的? 'return obj1Changes.Cast>()。Concat(obj2Changes.Cast >())。OrderByDescending(r => r.When).Take(numberofChanges);' –