从包含多个表的数据集中找到最小值和最大值
本文关键字:最小值 最大值 集中 数据集 包含多 数据 | 更新日期: 2023-09-27 18:10:39
我正在开发一个asp.net应用程序,我有一个数据集有3个表,即ds.Tables[0], Tables[1] and Tables[2]
我需要在数据集的所有3个表中找到最小数量和最大数量。怎么做呢?
我在这里发现了类似的问题,但不确定这将如何帮助我得到我的方式?
更新:
double minValue = double.MinValue;
double maxValue = double.MaxValue;
foreach (DataRow dr in dtSMPS.Rows)
{
double actualValue = dr.Field<double>("TOTAL_SUM"); // This fails specifying type cast error
minValue = Math.Min(minValue, actualValue);
maxValue = Math.Max(maxValue, actualValue);
}
请指导!谢谢。
您可以在已经链接到的解决方案中添加一个额外的for循环。例如
int minAccountLevel = int.MaxValue;
int maxAccountLevel = int.MinValue;
for (int i = 0; i < 3; i++)
{
var table = ds.Tables[i];
foreach (DataRow dr in table.Rows)
{
int accountLevel = dr.Field<int>("AccountLevel");
minAccountLevel = Math.Min(minAccountLevel, accountLevel);
maxAccountLevel = Math.Max(maxAccountLevel, accountLevel);
}
}
如果它们有相同的列名,假设'decimalValue',那么:
decimal minAccountLevel = decimal.zero;
decimal maxAccountLevel = decimal.zero;
for (int i = 0; i < dts.Tables.Count; i++)
{
foreach (DataRow dr in dts.Tables[i].Rows)
{
decimal accountLevel = decimal.Parse(dr["decimalValue"].ToString());
minAccountLevel = Math.Min(minAccountLevel, accountLevel);
maxAccountLevel = Math.Max(maxAccountLevel, accountLevel);
}
}
您可以在每个DataTable上使用Compute
方法来选择最小值和最大值。
免责声明这不是安全代码;您应该检查错误和空值,并使其更具可读性。
应该这样做:
decimal max = Math.Max(Convert.ToDecimal(ds.Tables[2].Compute("MAX(AccountLevel)","").ToString()), Math.Max(Convert.ToDecimal(ds.Tables[0].Compute("Max(AccountLevel)","").ToString()),Convert.ToDecimal(ds.Tables[1].Compute("Max(AccountLevel)","").ToString()));