如何从LINQ查询中输出简单计数(i​​nt)?

问题描述:

我想要获取数据表中列的不同数量。如何从LINQ查询中输出简单计数(i​​nt)?

我到目前为止

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都是一样的,所以含混计数应该是但我得到。

所以在你的例子中每一行你正在做一个选择不同。我相信你想要的是:

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

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

我假设数据DataTable对象,从而尝试以这种方式

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