使用C#查找数据表中的最小值和最大值

可能重复:
如何选择数据表中列的最小值和最大值?

我正在搜索可以从数据表中的列中找到最小值和最大值(或第一个和最后一个值)的代码。

我已经存储了具有四个列值的数据表,我希望从第三列(索引2)中找到最小值和最大值,并将其显示给用户。

我尝试了很多方法,但都导致例外……

最后我尝试了这段代码,但即使这样也行不通

count = Convert.ToInt32(dt.Rows.Count); start = Convert.ToInt32(dt.Rows[0][2].ToString()); end = Convert.ToInt32(dt.Rows[count-1][2].ToString()); 

谢谢vince

您始终可以使用DataTable上的.Select方法来获取这些行:

 var maxRow = dt.Select("ID = MAX(ID)"); 

这将返回一个DataRow[]数组 – 但它通常应该只包含一行(除非您有多行具有相同的最大值)。

同样适用于最低要求:

 var minRow = dt.Select("ID = MIN(ID)"); 

有关更多详细信息,请参阅DataTable.Select上的MSDN文档 。

stackoverflow上提供了答案: 如何选择数据表中列的最小值和最大值?

谢谢,Swapnil。

count startend数据类型是什么? 这不会显示在您的代码中。

此外,您提供的代码(如果有效)只会为您提供第一个和最后一个元素,而不是集合中的最小值和集合中的最大值。 如果您正在寻找最小值/最大值,则需要编写一个循环,例如:

 // minimum int min = dt.Rows[0][2]; // assuming you want the third column (index 2) for(int i = 1; i < dt.Rows.Count; i++) { if(min > (int)dt.Rows[i][2]) min = (int)dt.Rows[i][2]; } // maximum int max = dt.Rows[0][2]; // assuming you want the third column (index 2) for(int i = 1; i < dt.Rows.Count; i++) { if(max < (int)dt.Rows[i][2]) max = (int)dt.Rows[i][2]; } 

显然,这些也可以组合成一个循环:

 // minimum and maximum int max = dt.Rows[0][2]; // assuming you want the third column (index 2) int min = dt.Rows[0][2]; // assuming you want the third column (index 2) for(int i = 1; i < dt.Rows.Count; i++) { if(max < (int)dt.Rows[i][2]) max = (int)dt.Rows[i][2]; if(min > (int)dt.Rows[i][2]) min = (int)dt.Rows[i][2]; } 

@marc_s的答案对于您的特定用例(数据表)更为优雅,但我的答案适用于索引集合中的任何数据集。