我有一个类,其中有几个List<T>
对象。这些列表是“关联的”,因此每个列表中的第一个项目是相关的,第二个是相关的,依此类推(类似于单个记录中的字段)。我想一起循环遍历列表以同时更改每个“记录”的一些数据。
使用foreach
循环,我可以遍历一个列表,而无需通过i
或类似的方式跟踪记录。但是,我不知道如何同时访问其他列表中的相关项目。我是否必须使用类似的变量来计算它i
,还是有更好的方法?我对泛型和基于类的编程还是很陌生。我是否完全错过了安排这些数据的更好方法?
所以这是一个有趣的问题......请注意,我怀疑一些不同的数据建模可能已经能够解决这个问题,但如果你将相关项目一起存储在一个元组中,你可以摆脱同步列表...拥有这些同步列表并依赖于它们都应该在“i”处对应的事实似乎非常危险,因为任何排序、分组或分页(Skip/Take)都可能打破这种范式。
如果您将它们存储在 aList<Tuple<ItemTypeFromList1, ItemTypeFromList2, ... ItemTypeFromListN>>
那么您可以将这些项目一起保存在一个列表中,这样您就可以对列表进行一次迭代,然后适当地对元组中的 N 个项目进行操作
使用标准 for 循环和索引(您的 i),这将允许您访问每个数组中的相同元素。没有更好的方法来做到这一点。
我能想到的最简单的方法是使用标准的 for 循环。当索引很重要时,我总是更喜欢 for-loops 而不是 foreach。
for(int i = 0; i < list1.Count(); i++)
{
list1[i].someMethod();
list2[i].someMethod();
...
}
我假设所有列表在您所说的相关时都具有相同的长度。
您可能希望考虑将相关项目组合在一个类中,然后只有一个列表,而不是多个。
如何在单个类中收集“行”的所有数据并将此类的实例放在单个列表中,而不是尝试保持同步的多个列表
尝试使用以下代码
foreach (var i in firstList )
{
var s1 = secondList[firstList.LastIndexOf(i)];
var s2 = thirdList[firstList.LastIndexOf(i)];
}
希望这是你想要的答案.. :)