检索列具有值的数据行的计数

时间:2013-11-06 19:05:27

标签: c# linq datatable

我有一个名为ContainerTitle的DataTable。我想获得DataTable中ContainerTitle具有特定值的行数。例如,假设DataTable有16行ContainerTitle = "Widget1"和10行ContainerTitle = "Widget2"。我想查询以获取ContainerTitle = "Widget1"的行数。稍后,当完成处理这些行时,我想获得ContainerTitle = "Widget2"行的计数。我无法弄清楚如何计算。

到目前为止,我已经提出了代码在数据行中递增的内容:

for(int i=0;i<dt.Rows.Count;i++)
{
    DataRow dr = dt.Rows[i];
    szContainerName = dr["ContainerTitle"].ToString();

    // here is where I am attempting to get the count
    var tst = dt.AsEnumerable().Where(p => p.Field<string>("ContainerTitle") == szContainerName );

    .
    .
    .
    if (szContainerName != szPrevContainerName)
    {
        szPrevContainerName= szContainerName ;
    }

}

1 个答案:

答案 0 :(得分:4)

Count会接受谓词,你可以像:

一样使用它
var count = dt
           .AsEnumerable()
           .Count(p => p.Field<string>("ContainerTitle") == szContainerName );

您还可以将Count添加到where子句中,如:

var count = dt
           .AsEnumerable()
           .Where(p => p.Field<string>("ContainerTitle") == szContainerName );
           .Count();