相关疑难解决方法(0)

在C#中使用一个ForEach语句迭代两个列表或数组

这只是为了一般知识:

如果我有两个,让我们说,List,我想用相同的foreach循环迭代,我们能做到吗?

编辑

只是为了澄清,我想这样做:

List<String> listA = new List<string> { "string", "string" };
List<String> listB = new List<string> { "string", "string" };

for(int i = 0; i < listA.Count; i++)
    listB[i] = listA[i];
Run Code Online (Sandbox Code Playgroud)

但是有一个foreach =)

c#

136
推荐指数
4
解决办法
12万
查看次数

如何同时迭代几个IEnumerables

假设我有两个(或更多)IEnumerable<T>元素.每个IEnumerable都有另一种类型T.列表可能非常长,不应完全加载到内存中.

IEnumerable<int> ints = getManyInts();
IEnumerable<string> strings = getSomeStrings();
IEnumerable<DateTime> dates = getSomeDates();
Run Code Online (Sandbox Code Playgroud)

我想要做的是迭代这些列表,并获得一个包含一个int,一个字符串和每个步骤一个DateTime的项目,直到达到最长或最短列表的末尾.两种情况都应该得到支持(bool param最长与最短等).对于较短列表中不可用的每个项目(因为已经达到结束),我希望默认值.

for(Tuple<int,string,DateTime> item in 
    Foo.Combine<int,string,DateTime>(ints, strings, dates))
{
    int i=item.Item1;
    string s=item.Item2;
    DateTime d=item.Item3;
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用延迟执行linq执行此操作?我知道使用IEnumerator直接结合yield return的解决方案.请参阅如何在.NET 2中同时迭代两个IEnumerables

.net linq performance foreach deferred-execution

5
推荐指数
1
解决办法
145
查看次数

标签 统计

.net ×1

c# ×1

deferred-execution ×1

foreach ×1

linq ×1

performance ×1