我想索引IEnumerable<DataRow>
的数组并将数据打印到表中。我收到以下错误,但不确定是否要克服它。
无法将类型
System.Data.DataRow
转换为string
IEnumerable<DataRow> query = from result in
DtSet.Tables["Results"].AsEnumerable()
where result.Field<string
("test").Contains("50")
select result;
var queryArray = query.ToArray();`
for (int i = 0; i < queryArray.Count(); i++)
{
table.Rows[i + 1].Cells[0].Paragraphs.First().Append(queryArray[i]);
}
答案 0 :(得分:1)
考虑:
var queryArray = query.ToArray();
(您还有一个小问题,因为您试图将数据行填充到目标段落中;这可能只是将“ system.data.datarow”附加到段落中)
但是实际上您可以删除该行并:
int i = 1:
foreach(var q in query)
table.Rows[i++].Cells[0].Paragraphs.First().Append(q["your column name"].ToString());
这就是说;枚举IEnumerable,使用一个单独的索引器变量来跟踪您所在的位置(excel工作表?)
旁注;我打电话来从数据行中提取单个列;您也可以将其作为LINQ语句的一部分,将数据行转换为enuneabke字符串
答案 1 :(得分:0)
使用dataview行过滤器似乎可以为您节省一些时间,例如:
DataView dv = new DataView(DtSet.Tables["Results"]);
dv.RowFilter = "test LIKE '%50%'";
foreach (DataRowView drv in dv)
{
//do the stuff...
}