How do I create a single list of object pairs from two lists in C#?

后端 未结 6 874
野趣味
野趣味 2020-12-07 01:25

I have two lists of objects. List A and List B. I need to create List C which combines List A and List B into pairs. For example:

List A
object a1
object a2
         


        
6条回答
  •  旧巷少年郎
    2020-12-07 01:50

    This would do it:

    public static IEnumerable> CombineWith(this IEnumerable first, IEnumerable second)
    {
        using (var firstEnumerator = first.GetEnumerator())
        using (var secondEnumerator = second.GetEnumerator())
        {
            bool hasFirst = true;
            bool hasSecond = true;
    
            while (
                // Only call MoveNext if it didn't fail last time.
                (hasFirst && (hasFirst = firstEnumerator.MoveNext()))
                | // WARNING: Do NOT change to ||.
                (hasSecond && (hasSecond = secondEnumerator.MoveNext()))
                )
            {
                yield return Tuple.Create(
                        hasFirst ? firstEnumerator.Current : default(T),
                        hasSecond ? secondEnumerator.Current : default(U)
                    );
            }
        }
    }
    

    Edit: I vastly prefer Paul's answer.

提交回复
热议问题