gpt4 book ai didi

c# - 如何将 Field 与类型一起使用?

转载 作者:太空狗 更新时间:2023-10-29 21:19:18 25 4
gpt4 key购买 nike

我有一个方法可以确定 DataTable 中列的最小值和最大值:

public void GetMinMaxRange( DataTable data, string valueColumnName )
{
var min = data.AsEnumerable().Min(m => m.Field<double>(valueColumnName));
var max = data.AsEnumerable().Max(m => m.Field<double>(valueColumnName));
}

我想将其重构为:

public void GetMinMaxRange( DataTable data, string valueColumnName )
{
DataColumn column = data.Columns[valueColumnName];
var min = data.AsEnumerable().Min(m => m.Field<column.DataType>(valueColumnName));
var max = data.AsEnumerable().Max(m => m.Field<column.DataType>(valueColumnName));
}

我需要确定数据类型并使用它而不是硬编码 m.Field<double> .如何做到这一点?

更新至于为什么我要计算最小值和最大值的差值

    public static double/decimal/int GetMinMaxRange<T>(DataTable data, 
string valueColumnName) where T : IComparable<T>
{
DataColumn column = data.Columns[valueColumnName];
var min = data.AsEnumerable().Min(m => m.Field<T>(valueColumnName));
var max = data.AsEnumerable().Max(m => m.Field<T>(valueColumnName)); ;
return max - min;
}

最佳答案

简单地将其创建为通用应该可行:

public void GetMinMaxRange<T>( DataTable data, string valueColumnName ) 
where T : IComparable<T>
{
DataColumn column = data.Columns[valueColumnName];
var min = data.AsEnumerable().Min(m => m.Field<T>(valueColumnName));
var max = data.AsEnumerable().Max(m => m.Field<T>(valueColumnName));
}

然后您将用作:

GetMinMaxRange<MyType>(dataTable, valueColumnName);

关于c# - 如何将 Field<T> 与类型一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7390835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com