从包含多个表的数据集中找到最小值和最大值

本文关键字:最小值 最大值 集中 数据集 包含多 数据 | 更新日期: 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()));