如何连接ReadOnlyCollection

时间:2014-01-02 20:00:17

标签: c# concat readonly-collection

ReadOnlyCollection构造函数要求您为其提供IList。 但是如果你有一些想要连接并产生新ROC的ROC,那么Concat方法将返回IEnumerable。这不是传递给ROC构造函数的有效参数。

那么如何创建一个ROC作为其他ROC的串联?

到目前为止,这是我能想到的最好的:

ReadOnlyCollection<T> ROCConcat<T> ( ReadOnlyCollection<T> a, ReadOnlyCollection<T> b)
{
    List<T> tmp = new List<T>();
    foreach (T f in a.Concat(b))
        tmp.Add(f);
    return new ReadOnlyCollection<T>(tmp);
}

2 个答案:

答案 0 :(得分:9)

List<>

中创建一个新的IEnumerable<>
return new ReadOnlyCollection<T>(a.Concat(b).ToList());

或者我更喜欢:

return a.Concat(b).ToList().AsReadOnly();

这些基本上与你提出的相同,但它们在眼睛上更容易。

答案 1 :(得分:3)

我相信您可以使用ReadOnlyCollectionBuilder来执行此操作。

return (new ReadOnlyCollectionBuilder<T>(a.Concat(b))).ToReadOnlyCollection();