我们有一个存储过程,它返回一列字符串。我们想使用SqlHelper.ExecuteReader(ConnectionString,...)返回一个列表<字符串>但不确定语法。
我应该更明确。我不想循环阅读器并自己构建列表。我希望有一个更简洁,“一个班轮”或者某种我不知道的铸造。
答案 0 :(得分:2)
您可以使用此扩展方法:
public static IEnumerable<IDataRecord> AsEnumerable(this IDataReader reader)
{
while (reader.Read())
{
yield return reader;
}
}
...
using (var reader = SqlHelper.ExecuteReader(connectionString, query))
{
var list = reader.AsEnumerable().Select(r => r.GetString(0)).ToList();
}
答案 1 :(得分:0)
看看Retrieving Data Using a C# .NET DataReader。该示例为此类问题提供了解决方案。
答案 2 :(得分:0)
你尝试过这样的事吗?
var sl = new List<string>();
// Edit accordingly
string sql = "";
// Edit accordingly
string cs = "Data Source= ;Initial Catalog= ;Integrated Security= ;";
using (var conn = new SqlConnection(cs))
{
conn.Open();
using (var cmd = new SqlCommand(sql, conn))
{
using (var dr = new command.ExecuteReader())
{
var myRow = dr["MyColumn"];
sl.Add(myRow.ToString());
}
}
}