我建議使用LINQ:
int[] promotionIDs = (from dr in ds.Tables[0].AsQueryable()
where dr.Field<string>("Status") == "Active"
select dr.Field<int>("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<string>("Status") == "Active") {
...
}
}
現在,如何將Id添加到數組中。你在這裏做什麼?
promotionID = new int[] { Convert.ToInt32(dr["Id"]) };
...是創造一個價值,這是當前記錄的ID的新陣列(那是在它扔掉一切)。數組不是用於添加項目的好數據結構。讓我建議使用,而不是一個列表:
List<int> promotionIDs = new List<int>();
foreach (DataRow dr in ds.Tables[0].Rows) {
if (dr.Field<string>("Status") == "Active") {
promotionIDs.Add(dr.Field<int>("Id"));
}
}
如果您仍需要一個數組,日後可以轉換:
int[] promotionIDArray = promotionIDs.ToArray();
你值得所有的好友!謝謝:) – Ram 2010-11-18 16:26:12
不客氣。 – 2010-11-18 16:43:58