2010-07-04 62 views
2

的问题是.. 我列出的ID的集合。每一个相关的设置在数据库流量的ID ..C# - 泛型列表 - 不能清除,并添加所有一遍又一遍

我想要为每个循环使用一个列表ID来获取这组TL ID并将它们存储在一个列表中,但以类似于类的方式存储!

当我因此最终结果成为所有交通信号灯的id =计数不会在开始时添加TL_ids.Clear(); ..所有的结果相加..

,当我清楚之前Par.Clear(); 所有结果以零回来。

任何帮助?

List<int> TL_ids = new List<int>(); 
List<string> TL_Desc = new List<string>(); 

//Array That will Hold Role ID. 
ArrayList Par = new ArrayList(); 
//Get All Traffic Lights info. , but based on Iteration of Lists IDs. 
for (int i = 0; i < List_IDs.Count; i++) 
{ 
    Par.Clear(); 
    Par.Add(new SqlParameter("@List_id", List_IDs[i].ToString())); 
    SqlDataReader Dr = GetTLs.ExecSPSelect_dr("GetTLsByListID", Par); 

    while (Dr.Read()) 
    { 
    //Fill Intermediate Lists. 
    TL_ids.Add(int.Parse(Dr[0].ToString())); 
    TL_Desc.Add(Dr[1].ToString()); 
    } 

    ALL_TLsBy_Lists.Add(new Lists(List_IDs[i], TL_ids, TL_Desc)); 
} 

回答

3

希望我的问题得到了解决。

列表通过引用传递。

创建new Lists(...)时,您必须在每次迭代中创建一个新列表。

for (int i = 0; i < List_IDs.Count; i++) 
{ 
    TL_ids = new List<int>(); 
    TL_Desc = new List<string>(); 
    ... 
} 

否则,你结束了几个Lists对象具有相同TL_idsTL_Desc

因此,如果您在上次迭代中清除了TL_Desc,您将在所有Lists对象中获得一个空列表。

+0

非常感谢Jaroslav。 – 2010-07-04 19:26:04

相关问题