是否有比这更优雅的解决方案,用于将项目添加到IEnumerable
myNewIEnumerable = myIEnumerable.Concat ( Enumerable.Repeat (item, 1) );
?
一些背景:
public void printStrings (IEnumerable<string> myStrings) {
Console.WriteLine ("The beginning.");
foreach (var s in myStrings) Console.WriteLine (s);
Console.WriteLine ("The end.");
}
...
var result = someMethodDeliveringAnIEnumerableOfStrings ();
printStrings (result.Concat ( Enumerable.Repeat ("finished", 1) ) );
最佳答案
将单个元素附加到IEnumerable<T>
的最简单方法可能是使用此AsIEnumerable
扩展名(尽管Eric Lippert advises against为对象创建扩展名):
public static IEnumerable<T> AsIEnumerable<T>(this T obj)
{
yield return obj;
}
var appended = source.Concat(element.AsIEnumerable())
或使用以下
Append<T>
扩展名:https://stackoverflow.com/a/3645715/284240