如何从表中选择项目到列表

本文关键字:列表 项目 选择 | 更新日期: 2023-09-27 17:56:00

如何将数据读取器的结果放入List<String>

这是我到目前为止的代码:

public List<string> Item_Getall()
{
    List<string> data = new List<string>();
    SqlCommand cmd = new SqlCommand("c_get_all_item",oo.conn);
    cmd.CommandType = CommandType.StoredProcedure;
    oo.conn.Open();
    SqlDataReader rdr = cmd.ExecuteReader();
    while (rdr.Read())
    {
        data.Add(rdr["item_name_id_pk"].ToString());
        data.Add(rdr["item_name_arabic"].ToString());
        data.Add(rdr["item_componant"].ToString());
        data.Add(rdr["item_componant_arabic"].ToString());
        data.Add(rdr["item_price"].ToString());
        data.Add(rdr["item_image"].ToString());
        data.Add(rdr["item_category_name_id_fk"].ToString());
    }
    oo.conn.Close();
    return data;
}

如何从表中选择项目到列表<T>

最好使用自定义类型列表而不是字符串,并将自定义类型对象存储在列表中

List<YourCustomType> data = new List<YourCustomType>();

自定义类型

public class YourCustom
{
     public string ItemName {get; set;}
     //Similarly all the properties.
}

从数据读取器读取值并添加到自定义类型列表中

while (rdr.Read())
{
    data.Add(new YourCustom()
    {
       Id = rdr["item_name_id_pk"].ToString(),
       Name = rdr["item_name_arabic"].ToString()
       //Similarly all other properties could be set 
    }
}

我想你会想要创建一个自定义类并返回这个类的列表:

public class Item
{
     public int Id { get; set; }
     public string Name { get; set; }
}

阅读会是这样的:

var data = new List<Item>();
while (rdr.Read())
{
    data.Add(new Item()
    {
        Id = int.Parse(rdr["item_name_id_pk"]),
        Name = rdr["item_name_arabic"].ToString()
    }
}
return data;

另外,查看 using() 语句,这将使您的代码在数据库调用期间的异常眼中更加健壮。

使用 DataAdapter 和自定义类型:

SqlCommand cmd = new SqlCommand("c_get_all_item",oo.conn);
cmd.CommandType = CommandType.StoredProcedure;
oo.conn.Open();
var adapter = new SqlDataAdapter(cmd);
DataTable dt;
adapter.Fill(dt);
oo.Close()
//Convert DataTable to a list of YourType
List<YourType> data = dt.AsEnumerable().Select(s=> 
                         new YourType { 
                          item_name_id_pk = s.Field<FieldDataType>("item_name_id_pk"),
                          item_name_arabic = s.Field<FieldDataType>("item_name_arabic"),
                             ...
                         })
                         .ToList();

您的自定义类型将是这样的;

public class YourType
{
    //Replace the DataType with correct datatype to match with FieldDataType
    public DataType item_name_id_pk {get; set;}
    public DataType item_name_arabic {get; set;}
    ...
}