我将如何创建等效的 Linq To Objects 查询?
SELECT MIN(CASE WHEN p.type = "In" THEN p.PunchTime ELSE NULL END ) AS EarliestIn,
MAX(CASE WHEN p.type = "Out" THEN p.PunchTime ELSE NULL END ) AS LatestOUt
FROM Punches p
最佳答案
单个枚举产生最小值和最大值(以及您想放入的任何其他聚合)。这在 vb.net 中要容易得多。
我知道这不能处理空箱。这很容易添加。
List<int> myInts = new List<int>() { 1, 4, 2, 0, 3 };
var y = myInts.Aggregate(
new { Min = int.MaxValue, Max = int.MinValue },
(a, i) =>
new
{
Min = (i < a.Min) ? i : a.Min,
Max = (a.Max < i) ? i : a.Max
});
Console.WriteLine("{0} {1}", y.Min, y.Max);
关于具有多个聚合的 LINQ 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/154680/