插入重复值linq

Drk*_*per 5 c# linq

在一组价值观中

[0, 2, 25, 30]
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用linq

[0, 0, 0, 2, 2, 2, 25, 25, 25, 30, 30, 30] //Replicate 2 times (values repeated 3 times)
Run Code Online (Sandbox Code Playgroud)

有没有办法用linq做到这一点?

Tim*_*ter 12

使用值类型很容易,只需使用Enumerable.Repeat:

var result = collection.SelectMany(x => Enumerable.Repeat(x, 3));
Run Code Online (Sandbox Code Playgroud)

如果它是一个数组使用,ToArray如果它是最后的列表使用ToList.

对于引用类型,它取决于您是否真的需要相同的引用,那么您也可以使用Repeat.否则,您需要创建实例的"深度克隆",例如通过使用复制构造函数(如果可用):

var result = collection
    .SelectMany(x => Enumerable.Range(1, 3).Select(i => new YourType(x)));
Run Code Online (Sandbox Code Playgroud)

  • 哇,这么容易,现在我觉得自己像个白痴. (2认同)