是否有更优雅的解决方案将项目添加到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)
当然,有.Concat()接受任何IEnumerable<T>包括数组:
var myNewIEnumerable = myIEnumerable.Concat(new[] { item });
Run Code Online (Sandbox Code Playgroud)
也许将单个元素附加到 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/
| 归档时间: |
|
| 查看次数: |
224 次 |
| 最近记录: |