如何索引IEnumerable <Data Row>类型的数组?

时间:2019-08-30 04:42:03

标签: c#

我想索引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]);
            }

2 个答案:

答案 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...
}

Microsoft Documentation