var list = ProcessedInformationTable.AsEnumerable().ToList();
var minValue = list.Min(v => v["Rank"]);
var maxValue = list.Max(v => v["Rank"]);在上面的代码中,如果我有
minValue将返回为10,maxvalue将返回为9。我猜是因为它被视为字符串,即使每个值都是int。有办法绕道吗?
发布于 2013-09-13 20:27:04
不要从List<T>中创建DataTable,那样只会使所需内存加倍,而不会有任何好处。使用Linq-To-DataSet,它是Linq-To-Objects的一个子集。
如果列已经是int类型,那么您必须对其进行强制转换,否则它实际上是string。然后,您必须更改它,或者首先使用ìnt.Parse:
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<string>("Rank")));
int maxValue = rows.Max(r => int.Parse(r.Field<string>("Rank")));发布于 2013-09-13 20:23:27
如果您的Rank列是一个整数且不包含空值,则为:
var list = ProcessedInformationTable.AsEnumerable().ToList();
var minValue = list.Min(v => (int)v["Rank"]);
var maxValue = list.Max(v => (int)v["Rank"]);在计算时,v["Rank"]最有可能使用内置的object.ToString()作为字符串进行转换。
https://stackoverflow.com/questions/18794584
复制相似问题