我想存储我从列表中的数据库查询的许多记录,一个记录有10个字段,以便稍后循环。 但我不知道这样做。任何人都可以回答我。
答案 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()返回的数据保存到您的数据列表中,并根据需要在数据中循环。