Относительно цикла foreach и arraylist - PullRequest
0 голосов
/ 22 марта 2012
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 я могу напечатать все элементы массива и я сохраняю эту строку в сеансе, но когда я печатаю значение сеанса, он печатает только последний элемент массива.

Как я могу хранить все элементы массива в сеансе?

Ответы [ 4 ]

1 голос
/ 22 марта 2012

Используйте код ниже:

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 + ",";

Это важно, потому что вы хотите добавить тип данных.

0 голосов
/ 22 марта 2012

Или альтернатива +=. Используйте yield.

0 голосов
/ 22 марта 2012

Вы заменяете последнее значение каждый раз, когда делаете

Session["DatabaseFieldValuesSession"] = DatabaseFieldValues; 

Подумайте над тем, чтобы сделать что-то вроде

 Session["DatabaseFieldValuesSession"] += DatabaseFieldValues;
0 голосов
/ 22 марта 2012

Вы перезаписываете значение сеанса каждый цикл до последнего элемента, потому что неправильно обрабатываете строку 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"]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...