C# - 将数据存储在2列列表中

时间:2014-06-27 14:59:13

标签: c# string list npgsql

    public static List<string>[] ColumnToList2(string table, List<string>[]data, NpgsqlConnection ncon)
    {
        using (ncon)
        {
            NpgsqlDataAdapter da = new NpgsqlDataAdapter("SELECT id, name FROM " + table + "", ncon);
            DataSet ds = new DataSet();
            da.Fill(ds, "" + table + "");
            foreach (DataRow row in ds.Tables["" + table + ""].Rows)
            {
                //Testing area
                //Console.WriteLine(row["id"].ToString());
                //Console.WriteLine(row["name"].ToString());

                data[0].Add(row[0].ToString());
                data[1].Add(row[1].ToString());                    
            }
        }
        return data;
    }

再次问好!这次我想询问有关从value中搜索id的建议,然后将列存储在列表数组中。 当我在控制台中测试输入时,我想要的是什么,但是当在列表中输入后尝试查看时,没有我想要的resut(id name - list) 这里是变量的定义:

        List<string>[] data_array = new List<string>[];
        datu_array[0]=new List<string>();
        datu_array[1]=new List<string>();

当我尝试通过控制台查看输出时,有错误 - 我没有定义数组大小

我希望你能提前帮助我解决这个问题。

3 个答案:

答案 0 :(得分:4)

在实例化数组时,需要为数组指定一个大小:

List<string>[] data_array = new List<string>[2];

答案 1 :(得分:1)

我认为你实际上想要一个List<string[]>而不是List<string>[]。所以一个列表和每一行string[],所有列都作为字符串。

您可以使用LINQ:

List<string[]> data = ds.Tables[0].AsEnumerable()
 .Select(row => row.ItemArray
    .Select(col => col.ToString())
    .ToArray())
 .ToList();

但是为什么不留下DataTable,这比列表有一些优势,例如您可以通过序号或名称访问的列。

答案 2 :(得分:1)

根据我对你的问题的理解,我建议你使用字典而不是字符串数组列表。