我怎么可以遍历同时在两个IEnumerables在.NET 2 [英] How can I iterate over two IEnumerables simultaneously in .NET 2

查看:150
本文介绍了我怎么可以遍历同时在两个IEnumerables在.NET 2的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

编辑:我分开这两个问题:

  • 在迭代两个列表在较短的
  • 结束
  • 在遍历多个列表,直到最长的列表的最后一个元素已经达到

假设我有两个IEnumerable的许多元素。每一个IEnumerable的还有另外一个T型。

Assume I have two IEnumerable with many elements. Every IEnumerable has another type T.

IEnumerable<int> ints=getManyInts();
IEnumerable<string> strings=getSomeStrings();

我想要做的就是遍历两个列表,并获得包含一个int和一个字符串中的每一个步骤一个项目,直到最短列表的末端已经达到了。

What I want to do is to iterate over both lists, and get an item containing one int and one string for each step, until the end of the shortest list has been reached.

for(Item<int,string> item in Foo.Combine<int,string>(ints, strings))
{
    int i=item.Val1;
    string s=item.Val2;
}

您也可以给我一个提示如何做到这一点的.NET 4。

You can also give me a hint how to do this in .NET 4.

推荐答案

这可以通过手动操作完成什么for-each循环在内部做

This can be done by manually doing what the for-each loop is doing internally

IEnumerable<int> ints=getManyInts();
IEnumerable<string> strings=getSomeStrings();
using (IEnumerator<int> intsEnum = ints.GetEnumerator())
using (IEnumerator<string> stringsEnum = strings.GetEnumerator())
{
    while (intsEnum.MoveNext() && stringsEnum.MoveNext())
    {
        int i = intsEnum.Current;
        string s = stringsEnum.Current;
    }
}

编辑最长的清单:

IEnumerable<int> ints=getManyInts();
IEnumerable<string> strings=getSomeStrings();
using (IEnumerator<int> intsEnum = ints.GetEnumerator())
using (IEnumerator<string> stringsEnum = strings.GetEnumerator())
{
    bool intIsValid = intsEnum.MoveNext()
    bool stringIsValid = stringsEnum.MoveNext()
    while (intIsValid || stringIsValid)
    {
        int i = default(int)
        string s = default(string)
        if(intIsValid)
        {
           i = intsEnum.Current;
           intIsValid = intsEnum.MoveNext();
        }
        if(stringIsValid)
        {
           s = stringsEnum.Current;
           stringIsValid = stringsEnum.MoveNext();
        }
        //code goes here
    }
}

这篇关于我怎么可以遍历同时在两个IEnumerables在.NET 2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆