我建议使用LINQ:
int[] promotionIDs = (from dr in ds.Tables[0].AsQueryable() where dr.Field("Status") == "Active" select dr.Field ("Id")).ToArray();
如果你想修改你的代码,让我告诉你它有什么问题:
foreach (DataRow dr in ds.Tables[0].Rows[i]["Status"].ToString() == "Active")
它i
来自哪里?您正在使用foreach
,因此您不需要计数器变量.你的循环应该如下所示:
foreach (DataRow dr in ds.Tables[0].Rows) { if (dr.Field("Status") == "Active") { ... } }
现在,如何将Id添加到数组中.你在这做什么......
promotionID = new int[] { Convert.ToInt32(dr["Id"]) };
...是用一个值创建一个新数组(抛弃其中的所有内容),这是当前记录的Id.数组不是添加项目的好数据结构.我建议改用List:
ListpromotionIDs = new List (); foreach (DataRow dr in ds.Tables[0].Rows) { if (dr.Field ("Status") == "Active") { promotionIDs.Add(dr.Field ("Id")); } }
如果你仍然需要一个数组,你可以在之后转换它:
int[] promotionIDArray = promotionIDs.ToArray();