0

可能重复:
将单个元素添加到 IEnumerable 集合的最佳方法是什么?

假设我想连接 Enumerable.Repeat(100, 100) 和数字 3,最好的方法是什么?

我当然可以 Enumerable.Repeat(100, 100).Concat(Enumerable.Repeat(3,1)),但它看起来不是很有表现力......

4

4 回答 4

3

如果你真的想让它整洁,那么最好的办法是为类似的东西创建一个扩展方法ConcatSingle,然后调用它。

于 2012-10-24T08:49:45.910 回答
2

您可以使用仅包含该元素的中间数组:

Enumerable.Range(100, 100).Concat(new []{ 3 });

您还可以创建一个扩展方法来允许这样做,而无需创建额外的数组:

public static IEnumerable<T> ToEnumerable<T>(this T obj)
{
    yield return obj;
}  

现在这是可能的:

Enumerable.Range(100, 100).Concat(3.ToEnumerable());
于 2012-10-24T08:47:56.307 回答
0
public static IEnumerable<T> Concat(this IEnumerable<T> source, T item)
{
    //the code here is not very expressive to you :)
}

编辑建议不要使用方法 name Concat,使用ConcatSingleorConcatOne代替,请参阅下面评论中的讨论。

于 2012-10-24T08:53:37.610 回答
0

您可以创建将单个值转换为 IEnumerable 的扩展方法

public static class LinqEx
{
    public static IEnumerable<T> ToIEnumerable<T>(this T singleItem)
    {
        yield return singleItem;
    }
}

然后使用

Enumerable.Repeat(100, 100).Concat(3.ToIEnumerable())
于 2012-10-24T08:50:52.483 回答