C#中的DatTable,求某一列的最大值,最小值,平均值,列名是个变量

时间:2023-01-19 15:14:45
C#中的DatTable,求某一列的最大值,最小值,平均值,列名是个变量

2 个解决方案

#1


int minAccountLevel = int.MaxValue;
int maxAccountLevel = int.MinValue;
foreach (DataRow dr in table.Rows)
{
    int accountLevel = dr.Field<int>( "AccountLevel");
    minAccountLevel = Math.Min(minAccountLevel, accountLevel);
    maxAccountLevel = Math.Max(maxAccountLevel, accountLevel);
}
这样应该可以换成变量的

#2


本帖最后由 net_lover 于 2016-09-10 16:49:01 编辑
dt.Compute("max(" + field + ")", ""); 直接就可以


      DataTable dt = new DataTable();
      dt.Columns.AddRange(new DataColumn[] { new DataColumn("name", typeof(int)),
                                        new DataColumn("value", typeof(int))});
      dt.Rows.Add(new object[] { 1, 2 });
      dt.Rows.Add(new object[] { 2, 12 });
      dt.Rows.Add(new object[] { 3, 16 });
      String field = "value";
      Object t = dt.Compute("max(" + field + ")", "");
      MessageBox.Show(t.ToString());
       t = dt.Compute("min(" + field + ")", "");
      MessageBox.Show(t.ToString());

      t = dt.Compute("avg(" + field + ")", "");
      MessageBox.Show(t.ToString());

#1


int minAccountLevel = int.MaxValue;
int maxAccountLevel = int.MinValue;
foreach (DataRow dr in table.Rows)
{
    int accountLevel = dr.Field<int>( "AccountLevel");
    minAccountLevel = Math.Min(minAccountLevel, accountLevel);
    maxAccountLevel = Math.Max(maxAccountLevel, accountLevel);
}
这样应该可以换成变量的

#2


本帖最后由 net_lover 于 2016-09-10 16:49:01 编辑
dt.Compute("max(" + field + ")", ""); 直接就可以


      DataTable dt = new DataTable();
      dt.Columns.AddRange(new DataColumn[] { new DataColumn("name", typeof(int)),
                                        new DataColumn("value", typeof(int))});
      dt.Rows.Add(new object[] { 1, 2 });
      dt.Rows.Add(new object[] { 2, 12 });
      dt.Rows.Add(new object[] { 3, 16 });
      String field = "value";
      Object t = dt.Compute("max(" + field + ")", "");
      MessageBox.Show(t.ToString());
       t = dt.Compute("min(" + field + ")", "");
      MessageBox.Show(t.ToString());

      t = dt.Compute("avg(" + field + ")", "");
      MessageBox.Show(t.ToString());