如何使用其他两个集合的内容创建一个新的对象集合,而不需要嵌套循环



我需要使用Guids数组和字符串集合的内容创建一个对象集合。使用嵌套循环(如

)很容易做到这一点。

Guid[] guids;
string[] names;
NewObject[] combined;
foreach(Guid g in guids) {
foreach(string name in names) {
combined.Add(new NewObject() {
Guid = g, Name = name
}
}
}

我想知道是否有一种方法可以在没有嵌套循环的情况下做到这一点。我一直在绞尽脑汁想办法,但就是想不出来。

Try with Enumerable.Zip:

Guid[] guids;
string[] names;
NewObject[] combined;
var combinedObjects = Enumerable.Zip<Guid, string, NewObject>(guids, names, (guid, name) => new NewObject {Guid = guid, Name = name});

首先,数组应该具有相同的大小。然后你可以运行一个for循环来设置对象,不需要两个for循环。

NewObject[] combined = new NewObject[guids.Length];
for (int i = 0; i < guids.Length; i++)
{
combined[i] = new NewObject { Guid = guids[i], Name = names[i] };
}