我有两个不同的IEnumerable对象,但两个类中的属性几乎相似,现在我想连接/合并它们,因此两个结果都可以分配给转发器数据源,下面是示例代码。
IEnumerable<ICachedItem> cacheOld = Cache<String>.CachedItems; //My Old Cache Class, here I am fetching all the cached Items
IEnumerable<Caching.ICachedItem> cacheNew = Caching.Cache<String>.CachedItems; //My New class to get the cached items
var combined = cacheNew.Cast<ICachedItem>().Concat(cacheOld); //Trying to concat both
repeater.DataSource = combined.OrderBy(entry => entry.Region + ":" + entry.Prefix + ":" + entry.Key); //Assigning to Datasource
repeater.DataBind();
合并对象空白,任何建议。
更新: 目前我们在课堂上有这些
public class CachedItem<T>: ICachedItem
{
public CachedItem(String key, String prefix, T value)
: this(CacheRegion.Site, prefix, key, value)
{
}
}
我们需要修改这个类吗?
答案 0 :(得分:2)
您可以使用Select
将新项目转换为旧项目。假设你有适当的构造函数,你可以这样做:
var combined = cacheNew.Select(newItem => new OldCachedItem(newItem)).Concat(cacheOld);
结果将是IEnumerable<ICachedItem>
类型。您应该将OldCachedItem
替换为实现ICachedItem
的旧缓存项类型的名称。