是否有比这更优雅的解决方案,用于将项目添加到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

10-07 17:22