我有一个类中有几个List<T>
个对象。这些列表是“关联的”,因此每个列表中的第一项是相关的,第二项是相关的,依此类推(单个记录中的类似字段)。我想一起遍历列表,以便每个“记录”同时改变一些数据。
使用foreach
循环,我可以遍历一个列表,而无需通过i
或其他类似跟踪记录。但是,我不知道如何同时访问其他列表中的相关项目。我是否必须使用像i
这样的变量来计算它,还是有更好的方法?我对于泛型和基于类的编程仍然很陌生。我完全错过了安排这些数据的更好方法吗?
答案 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)];
}
希望这是你想要的答案.. :)