日期:2014-05-17  浏览次数:20856 次

datatable里某列不相同数字的个数
例如,datatable里id列里有如下数字:51 52 52 53 51,那么不同数字的个数为3。
或者 60 62 68 62 64,不同数字的个数为4.
有没有高效的算法得出这个数呢?

------解决方案--------------------
int count= dt.AsEnumerable().Select(t => t.Field<int>("id")).Distinct().Count();
------解决方案--------------------
LinQ即可
------解决方案--------------------
linq group
参考http://msdn.microsoft.com/zh-cn/library/bb384063.aspx
------解决方案--------------------
Linq不能用就用SQL啊。
table的数据不是在数据库吗?
------解决方案--------------------
探讨
回复2楼和3楼:

前提是不能使用LinQ,所以有点难度。

------解决方案--------------------
C# code

private int getCount()  
{  
    DataTable dt = XXX(); 
     ArrayList ArrDistinct = new ArrayList();//唯一值集合
     for (int i = 0; i < dt.Rows.Count; i++)
    {
        if(!ArrDistinct.Contains(dt.Rows[i]["id"].ToString()))
        {
             ArrDistinct.Add(dt.Rows[i]["id"].ToString());
        }
    }
    return ArrDistinct.Count;
}