处理数据表中的数据-如何找到每列的最小值和最大值
本文关键字:最小值 最大值 数据表 数据 处理 何找 | 更新日期: 2023-09-27 18:10:53
我有一个DataTable对象,它充满了来自我的数据库的数字数据。我必须处理所有可能的类似数字的数据类型(int32, int64, float,甚至datetime,但最后一个是不必要的)。
我必须规范化列中的所有数据,每一列单独,所以我需要找到每一列的最大值和最小值来计算规范化系数。
我是否必须"手动"遍历所有行以找到这些最大值和最小值?
一些背景:我不想在SQL中这样做,因为这是一种科学应用,用户在SQL语言中工作并编写非常复杂的SQL查询。我不想强迫用户编写更复杂的查询来获得规范化数据或最小/最大值
列是完全动态的,它们依赖于用户编写的SQL查询。
我必须"手动"遍历所有行以找到这些最大值和最小值?
手动定义。是的,您必须通过枚举所有DataRows
来计算Min
和Max
的值。但这可以用旧的DataTable.Compute
方法或
Linq :
int minVal = table.AsEnumerable().Min(r => r.Field<int>("ColName"));
int maxVal = table.AsEnumerable().Max(r => r.Field<int>("ColName"));
DataTable.Compute
:
int maxVal = (int)table.Compute("Max(ColName)", "");
试试这个:
var min = myTable.AsEnumerable().Min(x => (int)x["column"]);
var max = myTable.AsEnumerable().Max(x => (int)x["column"]);
您需要确保您有一个System.Data.DataSetExtensions
的引用,默认情况下它不会添加到新项目中。
您也可以使用
Convert.ToInt32(datatable.Compute("min(columnname)", string.Empty));
Convert.ToInt32(datatable.Compute("max(columnname)", string.Empty));
您可以使用DataTable.Select()
作为:
DataRow [] dr = dataTable.Select("ID= MAX(ID)");
if(dr !=null)
{
// Console.WriteLine(dr[0]["ID"]);
int maxVal=Convert.ToInt32(dr[0]["ID"]);
}
这对我来说很好
int max = Convert.ToInt32(datatable_name.AsEnumerable()
.Max(row => row["column_Name"]));