SqlDataReader を使用してデータを読み取るメソッドがあり、yield は IEnumerable を返します。
IEnumerable<string> LoadCustomers()
{
using(SqlDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
yield return rdr.GetString(0);
}
}
}
ここで、最新の 10 人の顧客のみが必要であると仮定しましょう。私はそれをできた
LoadCustomers.Take(10)
または 10 をパラメーターとして sql に渡し、my sql を作成します
SELECT TOP 10 FROM Customers ORDER BY CreationDate DESC
この投稿によると、datareaderが数行しか読み取らない場合でも(接続が開いている限り)、結果セット全体がSQLサーバーからクライアントに送信されています-Take(10)
余分なデータがとにかくクライアントに送信されるため、アプローチを避ける必要がありますまたは、それを回避するのは時期尚早の最適化になるでしょうか (yield リターン コードが 10 行を読み取った後に接続を閉じ、データ転送がとにかく停止するため)?