将单个项添加到可枚举

Joh*_*hnB 5 c# linq

是否有更优雅的解决方案将项目添加到IEnumerable而不是这个

myNewIEnumerable = myIEnumerable.Concat ( Enumerable.Repeat (item, 1) );
Run Code Online (Sandbox Code Playgroud)

一些背景:

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) ) );
Run Code Online (Sandbox Code Playgroud)

Fré*_*idi 5

当然,有.Concat()接受任何IEnumerable<T>包括数组:

var myNewIEnumerable = myIEnumerable.Concat(new[] { item });
Run Code Online (Sandbox Code Playgroud)

  • @JohnB,是的,这创建了一个元素的数组,这是我能想到的最简单的可枚举构造. (2认同)

Tim*_*ter 2

也许将单个元素附加到 an 的最简单方法IEnumerable<T>是使用此AsIEnumerable扩展(尽管Eric Lippert 建议不要为对象创建扩展):

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

var appended = source.Concat(element.AsIEnumerable())
Run Code Online (Sandbox Code Playgroud)

或使用此Append<T>扩展:/sf/answers/255200081/