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的所有项目?
答案 0 :(得分:1)
使用以下代码:
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 = dataType +“,”;你应该使用DatabaseFieldValues + = dataType +“,”;
这很重要,因为您要添加数据类型。
答案 1 :(得分:0)
你的会话值会覆盖每个循环到最后一个项目,因为你错误地处理了字符串。
您必须记住字符串是不可变的 - 当您通过在末尾添加新字符串来更改字符串时,结果是新字符串,而不是原始字符串的修改。这就是+ =更改有效的原因,它将连接的新字符串结果存储到原始字符串中。
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"]);
答案 2 :(得分:0)
每次更换时都要替换最后一个值
Session["DatabaseFieldValuesSession"] = DatabaseFieldValues;
考虑做一些像
这样的事情 Session["DatabaseFieldValuesSession"] += DatabaseFieldValues;
答案 3 :(得分:0)
或替代+=
使用yield
。