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

C# 使用C查找数据表中的最小值和最大值#,c#,datatable,max,min,C#,Datatable,Max,Min,可能重复: 我正在搜索可以从datatable中的列中查找最小值和最大值(或第一个值和最后一个值)的代码 我已经用四列值存储了datatable,我想从第三列(索引2)中找到最小值和最大值,并将其显示给用户 我尝试了很多方法,但都会导致异常 上一次我尝试了这段代码,但即使这样也不起作用 count = Convert.ToInt32(dt.Rows.Count); start = Convert.ToInt32(dt.Rows[0][2].ToString()); end = Conver

可能重复:

我正在搜索可以从datatable中的列中查找最小值和最大值(或第一个值和最后一个值)的代码

我已经用四列值存储了datatable,我想从第三列(索引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

您可以始终使用
。在
数据表上选择
方法来获取这些行:

var maxRow = dt.Select("ID = MAX(ID)");
这将返回一个
DataRow[]
数组,但它通常只包含一行(除非有多行具有相同的最大值)

最低限度也是如此:

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

有关更多详细信息,请参阅。

有关stackoverflow的答案:

谢谢,
Swapnil.

什么数据类型是
count
start
end
声明的?这在代码中没有显示

此外,您提供的代码如果有效,将只提供第一个和最后一个元素,而不是集合中的最小值和集合中的最大值。如果要查找min/max,则需要编写一个循环,例如:

// 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];
}
//最小值
int min=dt.行[0][2];//假设您想要第三列(索引2)
对于(int i=1;i(int)dt.Rows[i][2])min=(int)dt.Rows[i][2];
}
//最大值
int max=dt.行[0][2];//假设您想要第三列(索引2)
对于(int i=1;i
显然,这些也可以组合成一个循环:

// 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];
}
//最小值和最大值
int max=dt.行[0][2];//假设您想要第三列(索引2)
int min=dt.行[0][2];//假设您想要第三列(索引2)
对于(int i=1;i(int)dt.Rows[i][2])min=(int)dt.Rows[i][2];
}

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

您看到了哪些异常?@David“位置0处没有行”这是我在第二行得到的异常。。。数据表已满。。它不是空的。@Nate。。。很抱歉…所有的int和my datatable都是由该列排序的,所以min和max是第一个和最后一个元素。。。。