我有一组有两个属性的对象,A和B。我想得到A的最小值和B的最大值。
如
var minA = objects.Min(o => o.A);
var maxB = objects.Max(o => o.B);
使用linq查询语法,有没有办法做到这一点,使它只传递一次集合?
期望的结果将是匿名类型(例如,results.mina=x,results.maxb=y)
最佳答案
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
});
关于c# - 在单个LINQ查询中获取最大值和最小值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22240167/