C# 将数据行(仅单列)转换为字符串列表
请看什么地方出了问题?我想将datarow转换为字符串列表C# 将数据行(仅单列)转换为字符串列表,c#,linq,datatable,datarow,C#,Linq,Datatable,Datarow,请看什么地方出了问题?我想将datarow转换为字符串列表 public List<string> GetEmailList() { // get DataTable dt from somewhere. List<DataRow> drlist = dt.AsEnumerable().ToList(); List<string> sEmail = new List<string>();
public List<string> GetEmailList()
{
// get DataTable dt from somewhere.
List<DataRow> drlist = dt.AsEnumerable().ToList();
List<string> sEmail = new List<string>();
foreach (object str in drlist)
{
sEmail.Add(str.ToString()); // exception
}
return sEmail; // Ultimately to get a string list.
}
谢谢您的帮助。这里有几个问题,但最大的问题是您试图将整行转换为字符串,而实际上您应该尝试将单个单元格转换为字符串。您需要引用该数据行的第一列,可以使用括号(如数组)进行引用 请尝试以下方法:
public List<string> GetEmailList()
{
// get DataTable dt from somewhere.
List<string> sEmail = new List<string>();
foreach (DataRow row in dt.Rows)
{
sEmail.Add(row[0].ToString());
}
return sEmail; // Ultimately to get a string list.
}
林克之路
private static void Main(string[] args)
{
var dt = getdt();
var output = dt
.Rows
.Cast<DataRow>()
.ToList();
// or a CSV line
var csv = dt
.Rows
.Cast<DataRow>()
.Aggregate(new StringBuilder(), (sb, dr) => sb.AppendFormat(",{0}", dr[0]))
.Remove(0, 1);
Console.WriteLine(csv);
Console.ReadLine();
}
private static DataTable getdt()
{
var dc = new DataColumn("column1");
var dt = new DataTable("table1");
dt.Columns.Add(dc);
Enumerable.Range(0, 10)
.AsParallel()
.Select(i => string.Format("row {0}", i))
.ToList()
.ForEach(s =>
{
var dr = dt.NewRow();
dr[dc] = s;
dt.Rows.Add(dr);
});
return dt;
}
这是我从ReSharper那里得到的一条关于如何做到这一点的建议,我不确定它对性能的影响,只是想和大家分享一下
List<string> companyProxies = Enumerable.Select(
vendors.Tables[0].AsEnumerable(), vendor => vendor["CompanyName"].ToString()).ToList();
下面是所有附加语法噪声去除后的情况:一行
public List<string> GetEmailList()
{
return dt.AsEnumerable().Select(r => r[0].ToString()).ToList();
}
哪列包含您的电子邮件数据?供应商的类型是什么?供应商是ADO.NET数据集