[c#]LINQ︰ 将项目添加到每个第二的位置

标签: Linq C#
发布时间: 2017/2/28 23:04:45
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

所以我有一个列表︰

["item1"]
["item2"]
["item3"]

和我想要变成这样的列表︰

[""]
["item1"]
[""]
["item2"]
[""]
["item3"]

一个简单的后前循环给了我这一点︰

for (int i = list.Count-1; i >= 0; i--)
   list.Insert(i, string.Empty);

但我想知道是否有更优雅的方式做到这一点与 LINQ?

解决方法 1:

这里是一个方法去做︰

list = list.SelectMany(x => new [] { string.Empty, x }).ToList();

但值得注意的,这样将创建不必要的阵列。如果您的列表是大足够,可能有问题。相反我会创建一个新列表的容量和填充它使用循环︰

var newList = new List<string>(list.Count * 2);
int j = 0;
for(int i = 0; i < list.Count * 2; i++)
    newList.Add(i % 2 == 0 ? string.Empty : list[j++]);

这将避免调整列表大小每次添加或插入项目。

官方微信
官方QQ群
31647020