0

如何将 SQL 查询中的结果移动到 C# 中的数组或集合中?

我的 SQL 查询(从 mytable 中的 LastName 列中选择具有非空值的 LastName 值):

SELECT LastName FROM mytable WHERE LastName IS NOT NULL

这是我之前执行的代码,用于使用该列生成新数据集:

string connectionString = @"Data Source='/path-to-datatable/ASTS.sdf';";
string strSql = "SELECT LastName FROM mytable WHERE LastName IS NOT NULL";
SqlCeConnection mConnection = new SqlCeConnection(connectionString);
SqlCeCommand mCommand = new SqlCeCommand(strSql, mConnection);
PartNumberDataSet = new MyDataBase();
// Read all rows from the table into a dataset
SqlCeDataAdapter PNadapter = new SqlCeDataAdapter(mCommand);
PNadapter.Fill(PartNumberDataSet, "mytable ");

但是,我想尽量减少必须存储在内存中的数据量(我在该表中有很多 20 列左右)。如何将此查询保存到某个数组或集合中?我只需要 LastName 值。

4

1 回答 1

1

数据集和数据适配器可能会,也可能不会过大。您真的必须问自己是否需要DataSet(即您是否将它传递给旨在与DataSet 一起使用的API)。如果您确实需要它,那么可能几乎没有动力尝试对此做任何事情(除非您分析并确定它太重)。

但是,如果您不需要 DataSet 并且只需要从数据库中获取姓氏列表或其他数据,那么您可以使用SqlCeDataReader从数据库中读取结果集并填充您的集合。

使用 while 循环读取每条记录并从数据读取器中提取姓氏。对于每个姓氏,将其添加到集合中。

类似于以下内容的东西应该起作用:

 List<string> lastNames = new List<string>();
 using(SqlCeDataReader dr = mCommand.ExecuteReader())
 {
     while(dr.Read())
     {
         string lastName = (string)dr["LastName"];

         lastNames.Add(lastName);
     }
 }
于 2013-10-25T21:29:42.850 回答