如何从LINQ查询输出简单的count(int)?

时间:2017-10-05 21:22:04

标签: c# linq

我想获取数据表中列的不同计数。

到目前为止,我有以下内容

    public int DocumentsProcessed()
    {

        var query = from data in this._data
                    let docID = data.Field<string>("Document ID")
                    select new
                    {
                        docID
                    };

        var query2 = from d in query
                     select d.docID.Distinct().Count();

        var result = query2;

        return result;
    }

this._data是

private IEnumerable<DataRow> _data;

但结果是IEnumerable。我正在寻找一个整数作为答案。

编辑:我尝试首先按文档ID列对数据进行分组,然后对组进行计数,但它给了我错误的数字 - 例如我有16行,其中所有文档ID都相同,所以Distinct计数应 1 ,但我得到 16

2 个答案:

答案 0 :(得分:0)

因此,在每一行的示例中,您正在执行select distinct。我相信你想要的是:

var query = from data in this._data
            let docID = data.Field<string>("Document ID")
            select new
            {
                docID
            };

var distinctCount = query.Distinct().Count();

答案 1 :(得分:0)

我认为数据是DataTable对象,所以以这种方式尝试

int count = _data.
.AsEnumerable()
.Select(r => r.Field<string>("Document ID"))
.Distinct()
.Count();