добавить в список через цикл foreach Datarow - PullRequest
0 голосов
/ 27 марта 2019

Я просмотрел много вопросов, я не могу найти ответ, который мне нужен.Заранее извиняюсь, если его дубликат.

У меня есть функция, которая возвращает 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;
} 

Но с помощью этой функции я получаю неправильный вывод:

PS: Я также вынул imagesList.Add(data_str.ToString()); из цикла foreach, в этом случае вывод в порядке, но все это в одном элементе.

Желаемый выход:

Аэропорт, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ

Аэропорт, Терминал, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ

Аэропорт, Терминал, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ

AllStar, Розничная торговля, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ

ПУСТОЙ, Розничный, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ

ПУСТОЙРозничная торговля, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ

ПУСТОЙ, Розничная, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ

ПУСТОЙ, Розничная, ПУСТАЯ, ПУСТАЯ, ПУСТАЯ

МОЙ Выход:

Аэропорт, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ

Аэропорт, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, Аэропорт, Терминал, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ

Аэропорт, ПУСТОЙ, EMPTY, EMPTY, EMPTYAirport, Терминал, EMPTY, ПУСТОЙ, ПУСТОЙ, Аэропорт, Терминал, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, 1045 *

Аэропорт, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, ПУСТЫЙ аэропорт, Терминал, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, Аэропорт, Терминал, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, Розничной, ПУСТОЙ, ПУСТОЙ

Аэропорт, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, Аэропорт, Терминал, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, Аэропорт, Терминал, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, Розничный, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ

Аэропорт, ПУСТОЙ, ПУСТЫЙ, ПУСТОЙ, ПУСТОЙ, Аэропорт, Терминал, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, Аэропорт, Терминал, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, Розничный, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, ПУТЬ, EMPTY, EMPTY

Аэропорт, EMPTY, EMPTY, EMPTY, EMPTYAirport, Терминал, EMPTY, EMPTYAIRPORT, Терминал, EMPTY, EMPTY, EMPTYAllStar, Розничная торговля, EMPTY, EMPTY, EMPTY, Розничная торговля, EMPTY, EMPTY,ПУСТО, Розничная торговля, ПУСТО, ПУСТО, ПУСТО, Розница, ПУСТО, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ

Аэропорт, ПУСТОЙ, ПУСТЫЙ, ПУСТЫЙ, ПУСТОЙАрпорт, Терминал, ПУСТОЙ, ПУСТОЙ, ПУСТОЙПорт, Терминал, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ, ПУСТОЙ,Розница, ПУСТО, ПУСТО, ПУСТО, Розница, ПУСТО, ПУСТО, ПУСТО, Розница, ПУСТО, ПУСТО, ПУСТО, Розница, ПУСТО, ПУСТО, ПУСТО, Розница, ПУСТО, ПУСТО, ПУСТОЙ

1 Ответ

1 голос
/ 27 марта 2019

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