关于每个循环和数组列表
本文关键字:数组 列表 循环 于每个 | 更新日期: 2023-09-27 18:28:44
ArrayList demo = new ArrayList();
demo.Add(tbxProjName.Text);
string DatabaseFieldValues;
foreach (string dataType in demo)
{
DatabaseFieldValues = dataType + ",";
Response.Write(DatabaseFieldValues);
Session["DatabaseFieldValuesSession"] = DatabaseFieldValues;
}
Response.Write(Session["DatabaseFieldValuesSession"]);
在此代码中,
在foreach循环中,我能够打印arraylist的所有项目,并将该字符串存储在会话中,但是当我打印会话值时,它只打印arraylist的最后一项。
如何在会话中存储数组列表的所有项目?
使用以下代码:
ArrayList demo = new ArrayList();
demo.Add(tbxProjName.Text);
string DatabaseFieldValues;
foreach (string dataType in demo)
{
DatabaseFieldValues += dataType + ",";
Response.Write(DatabaseFieldValues);
}
Session["DatabaseFieldValuesSession"] = DatabaseFieldValues;
Response.Write(Session["DatabaseFieldValuesSession"]);
而不是数据库字段值 = 数据类型 + ","; 您应该使用 DatabaseFieldValues += 数据类型 + ",";
这很重要,因为您要添加数据类型。
每次
执行此操作时都会替换最后一个值
Session["DatabaseFieldValuesSession"] = DatabaseFieldValues;
考虑做类似的事情
Session["DatabaseFieldValuesSession"] += DatabaseFieldValues;
由于您错误地处理了字符串 concact,因此每次循环都会覆盖会话值。
您必须记住,字符串是不可变的 - 当您通过在末尾添加新字符串来更改它时,结果是新字符串,而不是对原始字符串的修改。这就是 += 更改起作用的原因,它将串联的新字符串结果存储到原始字符串中。
ArrayList demo = new ArrayList();
demo.Add(tbxProjName.Text);
string DatabaseFieldValues;
foreach (string dataType in demo)
{
DatabaseFieldValues += dataType + ",";
Response.Write(DatabaseFieldValues);
}
Session["DatabaseFieldValuesSession"] = DatabaseFieldValues;
Response.Write(Session["DatabaseFieldValuesSession"]);
此外,我建议从ArrayList
转移到强类型集合
IList<string> demo = new List<string>();
demo.Add(tbxProjName.Text);
Session["DatabaseFieldValuesSession"] = string.Join(",",demo);
Response.Write(Session["DatabaseFieldValuesSession"]);
或者替代+=
考虑使用 yield
.