首页 > 解决方案 > 如何从表行而不是数据库中的列中获取最大值和最小值

问题描述

我的数据库中有一个表格,其中有一列中有许多不同的学生姓名,每个科目标记有一列,例如课程 1、课程 2 - 课程 10。我正在尝试从学生那里找到最低和最高课程分数这是从数据库中选择的。这有意义吗?

我已经在这个问题上停留了一个多星期,因为我一直在寻找的所有答案都是如何从我需要一行的列中找到最小值和最大值。

请帮助我,我不知道还能尝试什么。

标签: c#

解决方案


    public int[] max_min_rowvalue(DataRow dr)
    {
        int[] i_array = new int[2];

        List<int> lst_values = new List<int>();

        //Start at 1 to avoid Student field which is presumably a varchar field
        //Presumes the course scores are int
        //Add null checks if required
        for(int i = 1; i <= dr.ItemArray.Length -1; i++)
        {
            if (lst_values.Contains(Convert.ToInt32(dr[i])) == false) lst_values.Add(Convert.ToInt32(dr[i]));
        }

        lst_values.Sort();

        i_array[0] = lst_values[0];
        i_array[1] = lst_values[lst_values.Count - 1];

        return i_array;
    }

测试:

DataTable dt = new DataTable();
dt.Columns.Add("Student");
dt.Columns.Add("Course1");
dt.Columns.Add("Course2");
dt.Columns.Add("Course3");
dt.Columns.Add("Course4");
dt.Columns.Add("Course5");
DataRow dr = dt.NewRow();
object[] rowarray = new object[6];
rowarray[0] = "Paul";
rowarray[1] = 8;
rowarray[2] = 2;
rowarray[3] = 10;
rowarray[4] = 10;
rowarray[5] = 4;
dr.ItemArray = rowarray;
int[] i_test = max_min_rowvalue(dr);
Debug.WriteLine(i_test[0]);
Debug.WriteLine(i_test[1]);

返回 2 和 10


推荐阅读