2

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

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

4

5 回答 5

2

所以这是一个有趣的问题......请注意,我怀疑一些不同的数据建模可能已经能够解决这个问题,但如果你将相关项目一起存储在一个元组中,你可以摆脱同步列表...拥有这些同步列表并依赖于它们都应该在“i”处对应的事实似乎非常危险,因为任何排序、分组或分页(Skip/Take)都可能打破这种范式。

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

于 2013-04-27T04:29:33.557 回答
1

使用标准 for 循环和索引(您的 i),这将允许您访问每个数组中的相同元素。没有更好的方法来做到这一点。

于 2013-04-27T04:26:20.777 回答
1

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

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

我假设所有列表在您所说的相关时都具有相同的长度。

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

于 2013-04-27T04:26:29.547 回答
1

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

于 2013-04-27T04:29:16.347 回答
0

尝试使用以下代码

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

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

于 2013-04-27T06:53:14.310 回答