我有以下代碼來複制列表X
次的成員。在列表中創建重複的項目
雖然它有效,但並不覺得特別乾淨。
直播的代碼示例: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; }
}
是否有這樣做的更好的辦法?如果你喜歡通順語法
int instances = 3;
var serviceEndPoints =
(from e in Enumerable.Range(0, instances)
from x in serviceEndPoints
select x)
.ToList();
或者:
var serviceEndPoints = Enumerable
.Range(0, instances)
.SelectMany(e => serviceEndPoints)
.ToList();
注意,給予相同的{ A, B, C }
列表會產生像{ A, B, C, A, B, C, A, B, C }
列表
你需要他們的順序重複內,或將X,Y,Z,X,Y,Z,X,Y, Z爲你工作呢? –
@JonSkeet順序並不重要,有些人可能會認爲不合順序會更好 – Paddy