连接可枚举和Linq中的数字

时间:2012-10-24 08:43:41

标签: c# .net linq ienumerable

  

可能重复:
  What is the best wayto add single element to an IEnumerable collection?

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

我当然能做到 Enumerable.Repeat(100, 100).Concat(Enumerable.Repeat(3,1)),但看起来并不富有表现力......

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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());

答案 2 :(得分: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())

答案 3 :(得分:0)

public static IEnumerable<T> Concat(this IEnumerable<T> source, T item)
{
    //the code here is not very expressive to you :)
}

编辑建议不要使用方法名称Concat,而是使用ConcatSingleConcatOne,请参阅以下评论中的讨论。