通过foreach循环Datarow添加到列表

时间:2019-03-26 23:58:53

标签: 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:我还从foreach循环中取出了imagesList.Add(data_str.ToString());,在这种情况下,输出很好,但是全部集中在一个元素中。

所需的输出:

机场,空,空,空,空

机场,终点站,空,空,空

机场,终点站,空,空,空

AllStar,零售,空,空,空

空,零售,空,空,空

空,零售,空,空,空

空,零售,空,空,空

空,零售,空,空,空

我的输出:

机场,空,空,空,空

机场,空,空,空,空机场,码头,空,空,空

机场,空,空,空,空机场,码头,空,空,空机场,码头,空,空,空

机场,空站,空站,空站,空站机场,航站楼,空站,空站,空站,机场,航站楼,空站,空站,空站,AllStar,零售,空站,空站,空站

机场,空,空,空,空,机场,码头,空,空,空,空港,码头,空,空,空,全明星,零售,空,空,空,零售,空,空,空

机场,空,空,空,空机场,码头,空,空,空机场,终端,空,空,空全明星,零售,空,空,空,零售,空,空,空,空,空,空,空

机场,空,空,空,空机场,码头,空,空,空机场,终端,空,空,空全明星,零售,空,空,空,零售,空,空,空,空,空,空,空,零售,空,空,空

机场,空,空,空,空机场,码头,空,空,空机场,终端,空,空,空全明星,零售,空,空,空,零售,空,空,空,空,空,空,空,零售,空,空,空,零售,空,空,空

1 个答案:

答案 0 :(得分:1)

您一直追加到data_str变量,然后将其添加到列表中。您应该跳过data_str并直接添加行信息。

In [4]: df['buoy3']
Out[4]:
       wind     water
0  1.681150  0.910194
1 -2.217671  0.349224
2  1.356037 -0.024291