<分区>
Possible Duplicate:
Extension method for Enumerable.Intersperse?
我有一个 List<string>
像这样:
"foo", "bar", "cat"
我希望它看起来像这样:
"foo", "-", "bar", "-", "cat"
是否有 C# 方法可以做到这一点?
<分区>
Possible Duplicate:
Extension method for Enumerable.Intersperse?
我有一个 List<string>
像这样:
"foo", "bar", "cat"
我希望它看起来像这样:
"foo", "-", "bar", "-", "cat"
是否有 C# 方法可以做到这一点?
最佳答案
您可以创建一个返回 IEnumerable<T>
的扩展有穿插的项目:
public static class ListExtensions {
public static IEnumerable<T> Intersperse<T>(this IEnumerable<T> items, T separator) {
bool first = true;
foreach (T item in items) {
if (first) {
first = false;
} else {
yield return separator;
}
yield return item;
}
}
}
这样做的好处是您不必用额外的项目弄乱您的列表,您可以在返回时直接使用它:
List<string> words = new List<string>() { "foo", "bar", "cat" };
foreach (string s in words.Intersperse("-")) {
Console.WriteLine(s);
}
如果需要,您当然可以将结果作为列表获取:
words = words.Intersperse("-").ToList();
关于c# - 散布一个列表<>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7430133/