次のような結果セットがあります-
ID, Name, Address
1,John, Japan
2,Sarah, UK
3,Jeremy, USA
結果セット/レコードセットで上記から任意の列を選択し、その列の行を反復できるようにしたいと考えています。それ、どうやったら出来るの ?
SqlDataReader
次のように、特定の列からすべての値を読み取る拡張メソッドを追加することを検討してください。
static IEnumerable<T> ReadColumn<T>(this SqlDataReader rdr, int index) {
while (rdr.Read()) {
yield return (T)rdr.GetValue(index);
}
}
このメソッドを使用すると、次のようにクエリから単一の列を読み取ることができるはずです。
var i = 1;
foreach (string name in cmd.ExecuteReader().ReadColumn<string>(1)) {
Console.WriteLine("Name {0} = {1}", i++, name);
}
ツリー プロパティを持つオブジェクト (例: Person) を追加する必要があります: ID、名前、およびアドレス
次に、そのタイプのオブジェクトを含むリストを作成できます。
元:
List<Person> persons;
var names = persons.Select(p => Name);
3 つのプロパティすべてに対して同じことができます。