【发布时间】:2020-05-17 10:58:07
【问题描述】:
如果我有一个List<string>,并且我想从列表中的所有 元素创建一个string,我可以使用Join 或Aggregate 来完成,如下所示那个。
var list = new List<string>() { "A", "B", "C", "D", "E" };
var concatAllByJoin = string.Join(string.Empty, list);
var concatAllByAggregate = list.Aggregate((a, b) => a + b);
两者都会产生字符串ABCDE。
如果我想做同样的事情,但只针对列表中的某个范围。说,我想连接索引 1 和 3 之间的项目。换句话说,我希望结果是BCD。
我能想到的一种方法是像这样使用GetRange():
var concatRange = string.Join(string.Empty, list.GetRange(1, 3));
这显然有效,但问题是数据重复。我很想知道是否有办法在不重复的情况下做到这一点。
【问题讨论】:
-
数据重复是什么意思?
-
你在使用 .NET Core 3 吗?
-
GetRange()不创建新列表吗? -
@maccettura 不,它是 .NET 常规框架。确切地说是 4.7。
-
GetRange()返回源List<T>中一系列元素的浅表副本。
标签: c# string concatenation aggregate