【问题标题】:LINQ select row with the minimum date valueLINQ 选择具有最小日期值的行
【发布时间】:2023-03-08 11:00:01
【问题描述】:

我有这个 linq 查询:

    var query = from mpItem in MPay
                where mpItem.EndDate > System.DateTime.Now.Date
                group mpItem by mpItem.IdGroup into mpItemGrouped
                let minEndDate = mpItemGrouped.Min(p => p.EndDate)
                select new
                {
                    Id = mpItemGrouped.Key,
                    EndDate = mpItemGrouped.Min(p => p.EndDate),
                    Name = mpItemGrouped.Min(p => p.IdGroupModel.GroupName),
                    Price = mpItemGrouped.Min(p => p.PaySumIndividual)
                };

此查询应为每个 IdGroup 选择具有最短 EndDate 的行 此查询正在选择具有其他行值的最小值 EndDate

【问题讨论】:

    标签: linq c#-4.0 linq-to-objects


    【解决方案1】:

    EndDate 以升序排列组,然后从组中选择第一个项目 - 这将是具有最短日期的项目。然后在select语句中使用此项

       var query = from MPayItem in MPay
                    where mpItem.EndDate > System.DateTime.Now.Date
                    group mpItem by mpItem.IdGroup into mpItemGrouped
                    let minItem = mpItemGrouped.OrderBy(p => p.EndDate).First()
                    select new
                    {
                        Id = mpItemGrouped.Key,
                        EndDate = minItem.EndDate,
                        Name = minItem.IdGroupModel.GroupName,
                        Price = minItem.PaySumIndividual
                    };
    

    【讨论】:

    • 这很有效,谢谢,很容易解决一个错误,因为我的问题:“MPayItem”应该是第一行的“mpItem”。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 2015-06-21
    • 2019-01-23
    • 1970-01-01
    相关资源
    最近更新 更多