我正在开发一个asp.net应用程序,其中我有一个包含3个表的数据集,即ds.Tables[0], Tables[1] and Tables[2]
我需要找到所有3个数据集表中的最小数量和最大数量。怎么做?
我在SO here中发现了类似的问题,但不确定这会如何帮助我找到自己的方式?
更新:
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);
}
请指导!感谢。
答案 0 :(得分:1)
您可以使用额外的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);
}
}
答案 1 :(得分:1)
如果它们具有相同的列名,则假设为'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);
}
}
答案 2 :(得分:1)
您可以在每个DataTable上使用Compute
方法为每个DataTable选择最小值和最大值。
免责声明这不是安全的代码;你应该检查错误,空值,并使其更具可读性。
这样的事情应该有效:
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()));