如何在现有的ICollection<T>
实例(例如dest
)中,以最高效且易读的方式添加来自IEnumerable<T>
的项目?
在我的用例中,我有某种实用方法Collect(IEnumerable items)
,它返回一个包含来自items
的元素的新ICollection
,因此我按照以下方式执行:
public static ICollection<T> Collect<T>(IEnumerable<T> items) where T:ICollection<T>
{
...
ICollection<T> dest = Activator.CreateInstance<T>();
items.Aggregate(dest, (acc, item) => { acc.Add(item); return acc; });
...
return dest;
}
问题:有没有更“好”的方法(更高效或更易读)来做这件事?
更新:我认为使用Aggregate()非常流畅,不像调用ToList()。ForEach()那么低效。但它看起来并不是很易读。由于没有人同意使用Aggregate(),所以我想听听您不使用Aggregate()的原因。
Aggregate
扩展方法的滥用。 - Codor