c# - 散布一个列表<>

标签 c# list

<分区>

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/

相关文章:

css - 带有 CSS 的菜单栏

c# - ListView 的来源 - Windows 窗体 c#

python - 从列表中删除未引用的对象

python - 如何检查一个数字是否在列表列表中?

python - Python中列表列表的最大值

c# - 在 Controller 中访问表单值,我试图将整个网格发布回发布方法 ASP.net MVC

c# - 如何在 .net 中获取客户端 IP 地址?

c# - 如何改进 Entity Framework 批量插入

c# - IComparer 接口(interface),比较许多对象而不仅仅是两个实例

c# - SSRS 外部图像在设计器中显示但在应用程序中不显示