如何从数据库中的表行而不是列中获取最大值和最小值

时间:2019-06-06 02:54:35

标签: c#

我的数据库中有一张表格,每一列中有许多不同的学生姓名,每一科目对应一列,例如-课程1,课程2-课程10。我正在尝试查找课程的最低和最高分数从数据库中选择的一名学生。这有道理吗?

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

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

1 个答案:

答案 0 :(得分:0)

    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