我有一组具有两个属性的对象,A和B.我想得到A的最小值和B的最大值.
例如
var minA = objects.Min(o => o.A);
var maxB = objects.Max(o => o.B);
Run Code Online (Sandbox Code Playgroud)
使用LINQ查询语法,有没有办法做到这一点,所以它只传递一次集合?
期望的结果将是匿名类型(例如,results.MinA = x,results.MaxB = y)
Cir*_*dec 12
Min和Max都是聚合.一般的linq聚合函数是Aggregate
假设属性A是一个整数,而B是一个字符串,你可以写这样的东西:
objects.Aggregate(
new {
MinA = int.MaxValue,
MaxB = string.Empty
},
(accumulator, o) => new {
MinA = Math.Min(o.A, accumulator.MinA),
MaxB = o.B > accumulator.MaxB ? o.B : accumulator.MaxB
});
Run Code Online (Sandbox Code Playgroud)