您可以在System.Linq中使用Enumerable.Zip()方法。
IEnumerable<Tuple<A, B>> pairs = listA.Zip(listB, (a, b) => Tuple.Create(a, b));
實施例使用此所得的可枚舉:
foreach (Tuple<A, B> pair in pairs)
{
A a = pair.Item1;
B b = pair.Item2;
}
恥有沒有能夠自動在.NET中tupleation過載。這樣的擴展應該是這樣的:
public static IEnumerable<Tuple<TFirst, TSecond>> Zip<TFirst, TSecond>(this IEnumerable<TFirst> first, IEnumerable<TSecond> second)
{
return first.Zip(second, Tuple.Create);
}
這意味着,你可以編寫代碼,看起來像:
IEnumerable<Tuple<A, B>> pairs = listA.Zip(listB);
注:另一種選擇是創建匿名類型,而不是Tuple
但不足之處到這種方法是,由於類型沒有名稱,您將無法(有用地)將創建的IEnumerable從其創建的方法中傳遞出去。
看到此http://stackoverflow.com/questions/166089/what-is- c-analog-of-c-stdpair –