C# WinForm:System.Data.DataTable dt=new System.Data.DataTable();............假设dt的结构如下:字段  A     B     C
      1     2     3
      2     3     4
      1     3     2
      3     4     1
      3     2     1现在要从这个dt中查询A共有多少个不同的值,比如上面A有三个,分别是1,2,3;  而B有三个,分别是2,3,4;  
                                                 C有四个:1,2,3,41. 怎么才能在System.Data.DataTable查出A共有多少个不同的值?2. 怎么才能在System.Data.DataTable查出A、B、C各自共有多少个不同的值?

解决方案 »

  1.   

    用For循环 +If判断不就行了
      

  2.   

    用循环判断啊?  我这个dt里上万行的数据  其中的字段A总共大约才10-20个不同的  这样做亏大了呀
      

  3.   

    1.T-SQL方法
    你在SQL里面用去用distinct关键字2.ADO.net方法
    利用视图
                //我这里只是随便初始化一个DataTable
                DataTable dtbl = new DataTable();
                DataView dv = new DataView(dtbl);            //dv.ToTable方法的第一个参数为TRUE剔除重复数据,第二个参数表明你这个表只选择A这一列
                int Count = dv.ToTable(true, "A").Rows.Count;
      

  4.   

    楼主找下 有个 DataTableHelper.cs 的类,可以操作使用T-SQL语句操作内存DataTable里的数据
    不过,看代码也是通过循环的方式,只不过封装的很好
      

  5.   

    5楼的方法很好,谢谢了。还有个小的问题:DataTable dtbl = new DataTable(); 怎么在这个dt里查找出字段A所有值的平均值啊? 就是在DataTable中查找该怎么做? 用dt.Select(???)可以么? 如果可以,里面的参数怎么写?
      

  6.   

    建议你去看看LINQ ,LINQ里面有一个Average()函数的
      

  7.   

    http://support.microsoft.com/kb/326176/zh-cn可以看看这个,DataSetHelper
      

  8.   

    .NET 2.0的项目,没Linq,难道System.Data.DataTable本身无查询筛选功能么?
      

  9.   


    dt.select 的参数形如:
    dt.Select(字段条件,排序方式);
    但是它返回的是DataRow,不知道 dt.Select(avg(字段))行不行