关于每个循环和数组列表

本文关键字:数组 列表 循环 于每个 | 更新日期: 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 .