如何在 C# 中按列循环或循环访问结果集或记录集

本文关键字:循环 记录 访问 结果 | 更新日期: 2023-09-27 18:36:29

我有一个结果集,如下所示 -

ID, Name, Address
1,John, Japan
2,Sarah, UK
3,Jeremy, USA

我希望能够在结果集/记录集中从上述列中选择任何列,然后遍历该列的行。我该怎么做?

如何在 C# 中按列循环或循环访问结果集或记录集

考虑添加一个扩展方法来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);

您可以对所有三个属性执行相同的操作。