我有一個有幾個List<T>
對象的類。這些列表是「關聯的」,因此每個列表中的第一個項目是相關的,第二個項目是這樣的(類似於單個記錄中的字段)。我想一起循環訪問列表,以便根據「記錄」同時更改一些數據。在類中循環關聯的列表?
隨着foreach
循環,我可以通過一個列表循環,而無需通過i
或其他一些跟蹤記錄。但是,我不知道如何同時訪問其他列表中的相關項目。我是否需要使用像i
這樣的變量來計算它,還是有更好的方法?我對泛型和基於類的編程還很新。我完全錯過了一個更好的方式來安排這些數據?
我有一個有幾個List<T>
對象的類。這些列表是「關聯的」,因此每個列表中的第一個項目是相關的,第二個項目是這樣的(類似於單個記錄中的字段)。我想一起循環訪問列表,以便根據「記錄」同時更改一些數據。在類中循環關聯的列表?
隨着foreach
循環,我可以通過一個列表循環,而無需通過i
或其他一些跟蹤記錄。但是,我不知道如何同時訪問其他列表中的相關項目。我是否需要使用像i
這樣的變量來計算它,還是有更好的方法?我對泛型和基於類的編程還很新。我完全錯過了一個更好的方式來安排這些數據?
使用標準for循環和索引(您的i),這將允許您訪問每個數組中的相同元素。沒有更好的方法來做到這一點。
我能想到的最簡單的方法是使用標準的for-loop。當索引很重要時,我總是喜歡for-loops而不是foreach。
for(int i = 0; i < list1.Count(); i++)
{
list1[i].someMethod();
list2[i].someMethod();
...
}
我假設所有列表的長度相同時,如你所說。
您可能希望查看將相關項目分組在一個類中,然後只有一個列表,而不是多個。
如何收集的所有數據的「行」在這個類的一個類和地點實例在一個單一的列表,而不是你想保持同步多個列表
因此,這是怎麼樣的有趣的問題...請注意,我懷疑一些不同的數據建模可能已經能夠解決這個問題,但是如果您將相關的項目一起存儲在一個Tuple中,您可以遠離同步列表......看起來很危險的是要有這些同步列表,並依靠他們應該都對應於「我」,因爲任何排序,分組或分頁(Skip/Take)都可能打破這種範例。
如果將它們存儲在List<Tuple<ItemTypeFromList1, ItemTypeFromList2, ... ItemTypeFromListN>>
,那麼你可以在一個單一的列表保持物品放在一起,這樣你可以做一個迭代在列表上,然後僅僅作用於元組適當地
我同意。如果OP在他的模型中有類似的東西,那麼更好的辦法是創建一個域對象而不是元組。 – aquaraga 2013-04-27 04:47:43
從來沒有聽說過域對象,但聽說過元組(儘管從來沒有使用它們)。看起來他們似乎說,他們是一成不變的一旦創建。這是否意味着如果我創建一個'List
@techturtle你不能重新分配元組屬性。所以在這種情況下,課堂會更好。 – MAV 2013-04-27 05:30:06
嘗試N個項目使用下面的代碼
foreach (var i in firstList)
{
var s1 = secondList[firstList.LastIndexOf(i)];
var s2 = thirdList[firstList.LastIndexOf(i)];
}
希望這是你想要的答案.. :)
我不同意...您的方法是一種方法,但它是脆弱的,如果還有人曾經返回排序或分頁列表那麼這種方法就會崩潰......最糟糕的是它你不明白......你不知道你的數據是錯誤的關聯,直到你開始暴露不良數據... – Rikon 2013-04-27 04:40:34
我也不認爲這總是最好的方式去。 OP必須同時切分列表的事實在建模中是一種氣味。 – aquaraga 2013-04-27 04:50:28
@Rikon,aquaraga我同意這不是嘗試保持三個列表同步的最佳模式。但是,考慮到問題中提供的設置,三個列表,那麼基本的循環是同時遍歷它們的方式。 – denver 2013-04-27 05:05:39