文字列の単一の列を返すストアドプロシージャがあります。 SqlHelper.ExecuteReader(ConnectionString、...)を使用してリスト< string>を返したいが、構文がわからない。SQLReaderを使用してListを返す方法<string>
私はもっと明示されていたはずです。私は読者をループして自分でリストを作成する必要はありませんでした。私はより簡潔な、「1つのライナー」、あるいは私が知らなかったかもしれない何らかの鋳造を望んでいました。
文字列の単一の列を返すストアドプロシージャがあります。 SqlHelper.ExecuteReader(ConnectionString、...)を使用してリスト< string>を返したいが、構文がわからない。SQLReaderを使用してListを返す方法<string>
私はもっと明示されていたはずです。私は読者をループして自分でリストを作成する必要はありませんでした。私はより簡潔な、「1つのライナー」、あるいは私が知らなかったかもしれない何らかの鋳造を望んでいました。
あなたはこの拡張メソッドを使用することができます。
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();
}
ありがとう私はこれのようなものを探していた。これらのクエリにはいくつかの種類があり、私は読者をループするよりも簡潔なものを望んでいました。 – Gio
@Gio、ちょうど警告: 'reader.AsEnumerable()。ToList()'のようなことをやろうとしないで、動作しません。リスト内のすべての項目は最後の行を参照します。列挙中にデータを抽出する必要があります。 –
Retrieving Data Using a C# .NET DataReaderをご覧ください。このサンプルは、このような問題の解決方法を示しています。
あなたはこのような何かをしようとしたことがありますか?
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());
}
}
}
このSqlHelper? http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/fd9229c0-53d0-4b3b-a7da-5df4047343a3 –
例を参照してください。http://stackoverflow.com/questions/2586674/c-これは正しい使い方ですか?sqldatareader-for-daab –
これはDNNの世界では時代遅れではありません。実際、それはDNNバージョン4と5のすべての場所で使用されています。素早く判断する必要はありません。 – Gio