我有以下代码来复制列表的成员X
times.
虽然它有效,但感觉不是特别干净。
实时代码示例:http://rextester.com/UIVZVX7918
public static List<ServiceEndPoint> GetServiceEndPoints()
{
const string source = "http://webSiteA.asmx,http://webSiteB.asmx";
const int instances = 3;
var splitEndPoints = source.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)
.Select((s, i) => new ServiceEndPoint
{
Index = i,
Uri = s
})
.ToList();
// Duplicate the contents of splitEndPoints "instances" number of times
var serviceEndPoints = new List<ServiceEndPoint>();
foreach (var point in splitEndPoints)
{
for (var i = 0; i < instances; i++)
{
serviceEndPoints.Add(point);
}
}
return serviceEndPoints;
}
public class ServiceEndPoint
{
public int Index { get; set; }
public string Uri { get; set; }
}
有更好的方法吗?
也许是这样的:
var serviceEndPoints = splitEndPoints.SelectMany(t =>
Enumerable.Repeat(t, instances)).ToList();
这会给你“A,A,A,B,B,B,C,C,C”。如果你想要“A,B,C,A,B,C,A,B,C”:
var serviceEndPoints = Enumerable.Repeat(
splitEndPoints, instances).SelectMany(t => t).ToList();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)