C# WinForm:System.Data.DataTable myTable=....;这个DataTable中有5列,每列都有10000条左右的数据A  B  C  D  E2  3  4  5  61  4  5  6  92  3  8  6  7..................要求C#从这个System.Data.DataTable中查找出这个表中A、B、C三列中(整体)的最大值和最小值对应上面给的几行数据,结果就是:Max  Min
8    1请问该怎么查找出来? 不要用循环比较的方法,因为每列都1W行左右呢。 用尽量少的语句,能一条搞定出结果的最好,谢谢。

解决方案 »

  1.   

    你那table数据从哪里来的呢。。
    如果是数据库的话不是有 min() max()这些就行了吗?
      

  2.   

    回1楼:不是还有个9吗?? 
    怎么最大的是8?
    ==================
     是A、B、C三列的最值,题目中说了"查找出这个表中A、B、C三列中(整体)的最大值和最小值"
     "整体"意思是将这三列看作一整体,而不是分别查每列的最值----------------------------------------------------------------
    回2楼:你那table数据从哪里来的呢。。 
    =====================================
    table数据源是个XML文档,这里没有真正的数据库连接的,所以只能在System.Data.DataTable中处理
      

  3.   


    DataTable dt = new DataTable();
                    DataColumn dc = new DataColumn();
                    dc.ColumnName = "A";
                    dc.DataType = typeof(int);
                    dt.Columns.Add(dc);
                    dc = new DataColumn();
                    dc.ColumnName = "B";
                    dc.DataType = typeof(int);
                    dt.Columns.Add(dc);
                    dc = new DataColumn();
                    dc.ColumnName = "C";
                    dc.DataType = typeof(int);
                    dt.Columns.Add(dc);                DataRow dr = dt.NewRow();
                    dr.ItemArray = new object[] { 2, 3, 4 };
                    dt.Rows.Add(dr);
                    dr = dt.NewRow();
                    dr.ItemArray = new object[] { 1, 4, 5 };
                    dt.Rows.Add(dr);
                    dr = dt.NewRow();
                    dr.ItemArray = new object[] { 2, 3, 8 };
                    dt.Rows.Add(dr);                object maxA = dt.Compute("Max(A)", "");
                    object minA = dt.Compute("min(A)", "");                object maxB = dt.Compute("Max(B)", "");
                    object minB = dt.Compute("min(B)", "");                object maxC = dt.Compute("Max(C)", "");
                    object minC = dt.Compute("min(C)", "");
      

  4.   

    呵呵  我原来就是用的5楼的方法 datatable.Compute()现在我数据少,这个表只有5列还好,我以后还会有10列的呢总不能都这样吧? 而且后面的比较还得写老长一段有没有更好的方案
      

  5.   

                ArrayList al = new ArrayList();
                DataTable dt = new DataTable();
                for (int i = 0; i++; i < dt.Rows.Count)
                {
                    al.Add(dt.Rows[i]["A"].ToString().Trim());
                    al.Add(dt.Rows[i]["B"].ToString().Trim());
                    al.Add(dt.Rows[i]["C"].ToString().Trim());
                }
                al.Sort();
                MessageBox.Show(al[al.Count -1].ToString ());//最大值
                MessageBox.Show(al[0].ToString());//最小值