可能重复:
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))
,但看起来并不富有表现力......
答案 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
,而是使用ConcatSingle
或ConcatOne
,请参阅以下评论中的讨论。