#c# #asp.net #datatable
#c# #asp.net #datatable
Вопрос:
Я просмотрел множество вопросов, я не могу найти ответ, который мне нужен. Заранее приношу извинения, если это дубликат.
У меня есть функция, которая возвращает imageslist
список, который должен содержать каждую строку data.Table
в качестве одного элемента
public IList<string> ImageLoader()
{
var data_str = new StringBuilder();
DataSet data = new DataSet();
SqlHelper db = new SqlHelper();
data.Tables.Add(
db.runQuery("SELECT * from Gallery")
);
data.Tables[0].TableName = "Images";
foreach(DataRow row in data.Tables["Images"].Rows)
{
data_str.Append(
row.ItemArray[1]
(row.ItemArray[2].ToString().Equals("") ? COMMA "EMPTY" : COMMA row.ItemArray[2])
(row.ItemArray[3].ToString().Equals("") ? COMMA "EMPTY" : COMMA row.ItemArray[2])
(row.ItemArray[4].ToString().Equals("") ? COMMA "EMPTY" : COMMA row.ItemArray[2])
(row.ItemArray[5].ToString().Equals("") ? COMMA "EMPTY" : COMMA row.ItemArray[2])
);
imagesList.Add(data_str.ToString());
}
return imagesList;
}
Но с помощью этой функции я получаю неверный вывод:
P.S: Я также удалил imagesList.Add(data_str.ToString());
из цикла foreach, в этом случае вывод в порядке, но все это в одном элементе.
Желаемый результат:
Аэропорт, ПУСТО, ПУСТОЙ,ПУСТОЙ, ПУСТОЙ
Аэропорт, Терминал, ПУСТО, ПУСТОЙ,ПУСТОЙ
Аэропорт, Терминал, ПУСТО, ПУСТОЙ,ПУСТОЙ
AllStar, Розничная продажа, ПУСТО, ПУСТОЙ, ПУСТОЙ
ПУСТОЙ, Розничная продажа, ПУСТОЙ, ПУСТОЙ,ПУСТОЙ
ПУСТОЙ, Розничная продажа, ПУСТОЙ, ПУСТОЙ,ПУСТОЙ
ПУСТОЙ, Розничная продажа, ПУСТОЙ, ПУСТОЙ,ПУСТОЙ
ПУСТОЙ, Розничная продажа, ПУСТОЙ, ПУСТОЙ,ПУСТОЙ
МОЙ вывод:
Аэропорт, ПУСТО, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ
Аэропорт, ПУСТОЙ, EMPTY, EMPTYAirport, Терминал, ПУСТОЙ, EMPTY, EMPTY
Аэропорт, ПУСТОЙ, EMPTY, EMPTYAirport, Терминал, ПУСТОЙ, EMPTYAirport, Terminal, EMPTY, ПУСТОЙ, EMPTY
Аэропорт, ПУСТОЙ, EMPTY, EMPTYAirport, Терминал, EMPTY, EMPTYAirport, Terminal, EMPTY, EMPTYAllStar, Розничная торговля, ПУСТОЙ, EMPTY, ПУСТОЙ
Аэропорт, ПУСТОЙ, EMPTY, EMPTYAirport, Терминал, EMPTY, EMPTYAirport, Terminal, EMPTY, EMPTYAllStar, Розничная торговля, ПУСТОЙ, EMPTY, РОЗНИЦА, ПУСТОЙ, EMPTY, EMPTY, EMPTY
Аэропорт, ПУСТОЙ, EMPTY, EMPTYAirport, Терминал, EMPTY, EMPTYAirport, Terminal, EMPTY, EMPTYAllStar, Розничная торговля, ПУСТОЙ, EMPTY, РОЗНИЧНАЯ торговля, ПУСТОЙ, EMPTY, РОЗНИЧНАЯ торговля, EMPTY, EMPTY, EMPTY, EMPTY
Аэропорт, ПУСТОЙ, EMPTY, EMPTYAirport, Терминал, EMPTY, EMPTYAirport, Terminal, EMPTY, EMPTYAllStar, Розничная торговля, EMPTY, ПУСТОЙ, EMPTY, Розничная торговля, EMPTY, EMPTY, EMPTY, Розничная торговля, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY
Аэропорт, ПУСТОЙ, EMPTY, EMPTYAirport, Терминал, EMPTY, EMPTYAIRPORT, Terminal, EMPTY, EMPTYAllStar, Розничная торговля, EMPTY, EMPTY, РОЗНИЧНАЯ торговля, EMPTY, ПУСТОЙ, EMPTY, Розничная торговля, EMPTY, EMPTY, EMPTY, Розничная торговля, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY
Ответ №1:
Вы продолжаете добавлять к переменной data_str, а затем добавляете ее в список. Вы должны пропустить data_str и добавить информацию о строке напрямую.
public IList<string> ImageLoader()
{
DataSet data = new DataSet();
SqlHelper db = new SqlHelper();
data.Tables.Add(
db.runQuery("SELECT * from Gallery")
);
data.Tables[0].TableName = "Images";
foreach(DataRow row in data.Tables["Images"].Rows)
{
imagesList.Add(row.ItemArray[1]
(row.ItemArray[2].ToString().Equals("") ? COMMA "EMPTY" : COMMA row.ItemArray[2])
(row.ItemArray[3].ToString().Equals("") ? COMMA "EMPTY" : COMMA row.ItemArray[2])
(row.ItemArray[4].ToString().Equals("") ? COMMA "EMPTY" : COMMA row.ItemArray[2])
(row.ItemArray[5].ToString().Equals("") ? COMMA "EMPTY" : COMMA row.ItemArray[2])
));
}
return imagesList;
}