使用c#将结果存储在内存(List)中

时间:2011-12-02 03:07:23

标签: c# asp.net asp.net-mvc

我想存储我从列表中的数据库查询的许多记录,一个记录有10个字段,以便稍后循环。 但我不知道这样做。任何人都可以回答我。

3 个答案:

答案 0 :(得分:1)

以下是将其存储在DataTable

中的方法
SqlConnection conn = new SqlConnection("yourConnectionStringHere");
SqlCommand GetData = new SqlCommand();
GetData.Connection = conn;
GetData.CommandText = "select * from yourTable"; // or whatever your query is, whether ad hoc or stored proc
// add parameters here if your query needs it

SqlDataAdapter sda = new SqlDataAdapter(GetData);
DataTable YourData = new DataTable();

try
{
    sda.Fill(YourData);
}
catch
{
    sda.Dispose();
    conn.Dispose();
}

如果您有10个字段,则很难将数据存储在List<T>对象中。您最好的选择是使用相应的属性/字段创建一个针对您要检索的数据(如果您希望比上面的DataTable实现更进一步)定制的类。

答案 1 :(得分:1)

也许你可以提供更多信息......

如果你使用实体框架或类似的方法来查询数据库,它可能会返回一个可枚举的对象..你只需要调用.ToList()就可以将它保存为列表。

您是否想要跨Web请求存储此信息?然后你可以将它存储在HttpRuntime.Cache集合中,允许它在一段时间后过期。

或者将其存储在静态属性中。会话也是一个选项,但它听起来不是这个

的最佳选择

答案 2 :(得分:1)

以下是存储数据并在其中循环的好方法。

将Model / POCO类创建为:

public class DataClassName
{
    public int Id { get; set; }
    public string Name { get; set; }
    //Create properties according to your fields
}

填写并获取数据列表:

public List<DataClassName> GetDataList()
{
    List<DataClassName> dataList = new List<DataClassName>();
    SqlCommand cmd = new SqlCommand();
    cmd.CommandText = "select * from TargetTableName";
    cmd.CommandType = CommandType.Text;
    try
    {
        using (SqlConnection connection = 
                   new SqlConnection("YourConnectionString"))
        {
            cmd.Connection = connection;
            connection.Open();
            SqlDataReader reader = cmd.ExecuteReader();
            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    dataList.Add(
                        new DataClassName()
                            {
                                Id = Convert.ToInt32(reader["ID"]),
                                Name = Convert.ToString(reader["Name"])
                                //Set all property according to your fields
                            });
                }
            }
        }
    }
    catch(Exception ex_)
    {
        //Handle exception
    }
    return dataList;
}

将从GetDataList()返回的数据保存到您的数据列表中,并根据需要在数据中循环。