C# DataTable.AsEnumerable().ToList();如果数据为int,则最小/最大返回值无效
在上面的代码中,如果我有C# DataTable.AsEnumerable().ToList();如果数据为int,则最小/最大返回值无效,c#,datatable,C#,Datatable,在上面的代码中,如果我有 列|秩 心脏病| 9 肺| 10 minValue将返回为10,maxvalue将返回为9。我的猜测是因为它被视为字符串,即使每个值都是int。有没有办法解决这个问题?如果您的秩列是整数且不包含null: var list = ProcessedInformationTable.AsEnumerable().ToList(); var minValue = list.Min(v => v["Rank"]);
minValue将返回为10,maxvalue将返回为9。我的猜测是因为它被视为字符串,即使每个值都是int。有没有办法解决这个问题?如果您的秩列是整数且不包含null:
var list = ProcessedInformationTable.AsEnumerable().ToList();
var minValue = list.Min(v => v["Rank"]);
var maxValue = list.Max(v => v["Rank"]);
v[“Rank”]
最有可能在计算时使用内置的对象.ToString()
将其转换为字符串。不要从数据表创建一个列表
,它只会将所需内存增加一倍,而没有任何好处。使用Linq到数据集
,它是Linq到对象
的子集
要么列的类型已经是int
,那么您必须相应地强制转换它,要么它实际上是string
。然后,您必须更改该选项或首先使用ìnt.Parse
:
var list = ProcessedInformationTable.AsEnumerable().ToList();
var minValue = list.Min(v => (int)v["Rank"]);
var maxValue = list.Max(v => (int)v["Rank"]);
var rows=processedFormationTable.AsEnumerable();
int minValue=rows.Min(r=>r.Field(“Rank”);
int maxValue=rows.Max(r=>r.Field(“Rank”);
如果是字符串:
var rows = ProcessedInformationTable.AsEnumerable();
int minValue = rows.Min(r => r.Field<int>("Rank"));
int maxValue = rows.Max(r => r.Field<int>("Rank"));
int-minValue=rows.Min(r=>int.Parse(r.Field(“Rank”));
intmaxvalue=rows.Max(r=>int.Parse(r.Field(“Rank”));
列数据类型int
在数据表中吗?@YuriyGalanter我没有指定数据表类型,因为它来自一个sql查询什么是“equired”内存?如果是错别字,不知道是什么。
int minValue = rows.Min(r => int.Parse(r.Field<string>("Rank")));
int maxValue = rows.Max(r => int.Parse(r.Field<string>("Rank")));