查找LINQ查询连接中的最大日期

本文关键字:日期 LINQ 查询 连接 查找 | 更新日期: 2023-09-27 18:11:55

请原谅我对这个问题缺乏了解,因为这个问题很基本,但我有一个可空 [DateTime]列,我想使用LINQ查询来选择每个用户的记录,通过连接找到最大的"时间戳"。

这是我目前的查询。

return (from t1 in db.BU
                from t2 in db.UserNames
                 .Where(t => (t.User_Username == t1.Username))
                from t3 in db.Logins
                .Where(t => (t.username == t1.Username))
                where myBusinessUnits.Contains(t1.BusinessUnit_ID)
                orderby (t2.Name) descending
                select new GlobalMyTeamDetailModel
                {
                     LastLogin = t3.timestamp,
                     Name = t2.Name
                });

如果有人能帮助我,我会很感激的。

这是我试图为每个用户获取的"Login"表的最大值。

编辑:另一次尝试没有得到期望的结果:

        var result =
           (from t1 in db.LoginHistories
            where t1.username == user
            from t2 in db.UserNames
                .Where(t => (t.User_Username == t1.username))
            from t3 in db.UserBusinessUnits
                .Where(t => (t.Username == t1.username))
            where myBusinessUnits.Contains(t3.BusinessUnit_ID)
            group t1 by new { t1.username } into g
            let MaxDate = g.Max(uh => uh.timestamp)
            select new GlobalMyTeamDetailModel
                {
                    LastLogin = MaxDate,
                    Name = g.Key.username
                });

查找LINQ查询连接中的最大日期

如果您总是至少有一个连接行,按时间戳排序t3并获取第一个(应该是最大的值)

return (from t1 in db.BU
            from t2 in db.UserNames
             .Where(t => (t.User_Username == t1.Username))
            from t3 in db.Logins
            .Where(t => (t.username == t1.Username))
            .OrderBy(u => u.timestamp).First()           // <--------- add this
            where myBusinessUnits.Contains(t1.BusinessUnit_ID)
            orderby (t2.Name) descending
            select new GlobalMyTeamDetailModel
            {
                 LastLogin = t3.timestamp,
                 Name = t2.Name
            });

在linq中使用group by和Max

 From p In db.Products _
            Group p By p.CategoryID Into g = Group _
            Select New With {g, .MaxPrice = g.Max(Function(p) p.UnitPrice)}