我的结果集如 -
ID, Name, Address
1,John, Japan
2,Sarah, UK
3,Jeremy, USA
我希望能够在结果集/记录集中选择上述任何列,然后迭代该列的行。我该怎么做?
答案 0 :(得分:1)
您应该添加一个具有树属性的对象(例如Person):ID,名称和地址
然后,您可以创建包含该类型对象的列表。
例如:
List<Person> persons;
var names = persons.Select(p => Name);
您可以对所有三个属性执行相同的操作。
答案 1 :(得分:1)
考虑向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);
}