加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何从C#中的两个列表创建单个对象对列表?

发布时间:2020-12-15 04:01:24 所属栏目:百科 来源:网络整理
导读:我有两个对象列表.列表A和列表B.我需要创建列表C,将列表A和列表B组合成对.例如: List Aobject a1object a2object a3List Bobject b1object b2object b3List C (creates pairs)object c1 (object a1,object b1)object c2 (object a2,object b2)object c3 (ob
我有两个对象列表.列表A和列表B.我需要创建列表C,将列表A和列表B组合成对.例如:
List A
object a1
object a2
object a3

List B
object b1
object b2
object b3

List C (creates pairs)
object c1 (object a1,object b1)
object c2 (object a2,object b2)
object c3 (object a3,object b3)

解决方法

这样做:
public static IEnumerable<Tuple<T,U>> CombineWith<T,U>(this IEnumerable<T> first,IEnumerable<U> 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)
                );
        }
    }
}

编辑:我非常喜欢Paul’s的答案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读