我有一个名为ItemChange<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
)。我使用它来比较字段更改。
现在,我正在尝试让它适用于获取多个对象的更改列表,然后将几种不同类型的 T 列表连接成一个数组,就像这样(注意: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 行给出了编译器错误(我假设我必须以某种特殊方式进行转换才能使其工作)。
有没有办法实现这个目标?
(IEnumerable<ItemChange<MyBase>>)obj2Changes
进行类型转换吗? - Alexreturn obj1Changes.Cast<ItemChange<MyBase>>().Concat(obj2Changes.Cast<ItemChange<MyBase>>()).OrderByDescending(r => r.When).Take(numberofChanges);
- Hamlet Hakobyan