我希望能够从数据行数组中获取数据行,其中数据行具有所有数据行中指定列的最大值。
我想它会跟随这个LINQ语句
Dim minRow As DataRow = myDataRows.AsEnumerable.Min(Function(row) row.Field(Of Decimal)("myColumnName"))
但Max函数返回小数而不是数据行。是否有一些简单的语法可以为我处理这样的查询?
在有人要求之前,我标记c#因为在winforms中他们可以使用网站轻松地在彼此之间进行转换。
答案 0 :(得分:1)
如果您可以使用MoreLINQ,则可以使用MaxBy()
轻松完成此操作:
var maxRow = myDataRows.MaxBy(r => r.Field<Decimal>("myColumnName"));
但是使用常规 Linq :
var minRow = myDataRows.OrderBy(r => r.Field<decimal>("myColumnName")).FirstOrDefault();
var maxRow = myDataRows.OrderBy(r => r.Field<decimal>("myColumnName")).LastOrDefault();
答案 1 :(得分:1)
有点晚但我想分享它;),你可以用O(n)代替O(n * log n)(这是OrderBy
扩展方法的顺序),如果你使用Aggregate
扩展方法:
var minRow =myDataRows.Aggregate(myDataRows[0],(seed,next)=>next.Field<decimal>("myColumnName").Field<decimal>("myColumnName")?next:seed);
检查您的myDataRows
数组是否至少有一行