这是很常见的事情 - 特别是在您试图让您的代码更加数据驱动的情况下 - 需要迭代关联的集合。例如,我刚刚完成了一个类似于这样的代码片段:
string[] entTypes = {"DOC", "CON", "BAL"};
string[] dateFields = {"DocDate", "ConUserDate", "BalDate"};
Debug.Assert(entTypes.Length == dateFields.Length);
for (int i=0; i<entTypes.Length; i++)
{
string entType = entTypes[i];
string dateField = dateFields[i];
// do stuff with the associated entType and dateField
}
在Python中,我会写出类似以下的代码:
items = [("DOC", "DocDate"), ("CON", "ConUserDate"), ("BAL", "BalDate")]
for (entType, dateField) in items:
# do stuff with the associated entType and dateField
我不需要声明平行数组,我不需要确认我的数组长度相同,我不需要使用索引来取出项目。
我觉得可以用LINQ在C#中完成这个操作,但我无法想出可能是什么。有没有一些轻松的方法可以迭代多个相关集合?
编辑:
我想这样会好一点——至少,在我有权限在声明时手动压缩集合,并且所有集合包含相同类型的对象的情况下。
List<string[]> items = new List<string[]>
{
new [] {"DOC", "DocDate"},
new [] {"CON", "ConUserDate"},
new [] {"SCH", "SchDate"}
};
foreach (string[] item in items)
{
Debug.Assert(item.Length == 2);
string entType = item[0];
string dateField = item[1];
// do stuff with the associated entType and dateField
}