如何使用单列 DataTable 的结果填充通用字符串列表?
How can I populate a generic list of string with the results from a single-column DataTable?
我看到很多关于转换具有多个成员行的 DataTable 的复杂示例 here 但在我的例子中,查询只是 returns 来自 table 的一列,即就是说0..Nstrings/varchars,比如:
bbfinaleofseem@wallacestevens.org
eyenoy@dunbar.com
我认为这样的事情应该可行:
DataTable UnitReportPairEmailValsDT = new DataTable();
string qry = string.Format(SQL.UnitReportPairEmailQuery, unit, rptId);
UnitReportPairEmailValsDT = SQL.ExecuteSQLReturnDataTable(
qry,
CommandType.Text,
null
);
List<String> emailAddresses = new List<string>();
foreach (string emailaddr in UnitReportPairEmailValsDT)
{
emailAddresses.Add(emailaddr);
}
...但它不会编译(foreach 语句不能对类型 'System.Data.DataTable' 的变量进行操作,因为 'System.Data.DataTable' 不包含 public 定义'GetEnumerator'")
我也尝试将“.AsEnumerable”附加到 "in UnitReportPairEmailValsDT",但这也激怒了编译器。
错误说你不能遍历 DataTable
对象本身,可能你需要的是遍历 DataRows
.
使用这个。
foreach(DataRow row in UnitReportPairEmailValsDT.Rows)
{
emailAddresses.Add(row["emailaddr"].ToString()); // assuming you have emailaddr column.
}
其他选项,使用Linq
emailAddresses = UnitReportPairEmailValsDT
.AsEnumerable()
.Select(row=> row.Field<string>("emailaddr"))
.ToList();
尝试这样的事情:
List<String> emailAddresses = new List<string>();
foreach (DataRow row in UnitReportPairEmailValsDT.Rows)
{
emailAddresses.Add(row.Item(0));
}
假设 dt 是您的数据 table 然后使用 Linq:
dt.Rows.Select(x=> x[0]+"").ToList() 会给你列表。请注意使用 Select(x=>xToString()),因为如果列值为 null,它很容易出错。 x[0]+"" 确保在 null 的情况下返回空字符串。
我看到很多关于转换具有多个成员行的 DataTable 的复杂示例 here 但在我的例子中,查询只是 returns 来自 table 的一列,即就是说0..Nstrings/varchars,比如:
bbfinaleofseem@wallacestevens.org
eyenoy@dunbar.com
我认为这样的事情应该可行:
DataTable UnitReportPairEmailValsDT = new DataTable();
string qry = string.Format(SQL.UnitReportPairEmailQuery, unit, rptId);
UnitReportPairEmailValsDT = SQL.ExecuteSQLReturnDataTable(
qry,
CommandType.Text,
null
);
List<String> emailAddresses = new List<string>();
foreach (string emailaddr in UnitReportPairEmailValsDT)
{
emailAddresses.Add(emailaddr);
}
...但它不会编译(foreach 语句不能对类型 'System.Data.DataTable' 的变量进行操作,因为 'System.Data.DataTable' 不包含 public 定义'GetEnumerator'")
我也尝试将“.AsEnumerable”附加到 "in UnitReportPairEmailValsDT",但这也激怒了编译器。
错误说你不能遍历 DataTable
对象本身,可能你需要的是遍历 DataRows
.
使用这个。
foreach(DataRow row in UnitReportPairEmailValsDT.Rows)
{
emailAddresses.Add(row["emailaddr"].ToString()); // assuming you have emailaddr column.
}
其他选项,使用Linq
emailAddresses = UnitReportPairEmailValsDT
.AsEnumerable()
.Select(row=> row.Field<string>("emailaddr"))
.ToList();
尝试这样的事情:
List<String> emailAddresses = new List<string>();
foreach (DataRow row in UnitReportPairEmailValsDT.Rows)
{
emailAddresses.Add(row.Item(0));
}
假设 dt 是您的数据 table 然后使用 Linq: dt.Rows.Select(x=> x[0]+"").ToList() 会给你列表。请注意使用 Select(x=>xToString()),因为如果列值为 null,它很容易出错。 x[0]+"" 确保在 null 的情况下返回空字符串。