通过类中的相关列表循环?

时间:2013-04-27 04:22:37

标签: c# list

我有一个类中有几个List<T>个对象。这些列表是“关联的”,因此每个列表中的第一项是相关的,第二项是相关的,依此类推(单个记录中的类似字段)。我想一起遍历列表,以便每个“记录”同时改变一些数据。

使用foreach循环,我可以遍历一个列表,而无需通过i或其他类似跟踪记录。但是,我不知道如何同时访问其他列表中的相关项目。我是否必须使用像i这样的变量来计算它,还是有更好的方法?我对于泛型和基于类的编程仍然很陌生。我完全错过了安排这些数据的更好方法吗?

5 个答案:

答案 0 :(得分:2)

所以这是一个有趣的问题...请注意,我怀疑某些不同的数据建模可能能够解决这个问题,但如果您将相关项目存储在元组中,则可以避免同步'ed lists ...拥有这些同步列表似乎非常危险,并且依赖于它们所有对应于“i”的事实,即任何排序,分组或分页(跳过/ Take)可以打破这种范式。

如果您将它们存储在List<Tuple<ItemTypeFromList1, ItemTypeFromList2, ... ItemTypeFromListN>>中,那么您可以将这些项目保存在一个列表中,这样您就可以对列表进行一次迭代,然后恰当地对元组中的N个项目进行操作

答案 1 :(得分:1)

使用标准for循环和索引(你的i),它允许你访问每个数组中的相同元素。没有比这更好的方法了。

答案 2 :(得分:1)

我能想到的最简单的方法是使用标准的for循环。当索引很重要时,我总是喜欢for-loops而不是foreach。

for(int i = 0; i < list1.Count(); i++)
{
      list1[i].someMethod();
      list2[i].someMethod();
      ...
}

我认为所有列表在它们相关时都是相同长度的。

您可能希望将相关项目分组到一个类中,然后只有一个列表,而不是多个列表。

答案 3 :(得分:1)

如何收集&#39;行的所有数据?在单个类中并将此类的实例放在单个列表中,而不是您尝试保持同步的多个列表

答案 4 :(得分:0)

尝试使用以下代码

foreach (var i in firstList )
        {
            var s1 = secondList[firstList.LastIndexOf(i)];
            var s2 = thirdList[firstList.LastIndexOf(i)];
        }

希望这是你想要的答案.. :)