簡體   English   中英

如何倒退三周內最后一個未登錄的用戶?

[英]How to get the last not logged-in user's within three weeks backwards?

我正在嘗試獲取過去三周內未登錄的用戶。 我聽說過要使用的方法 Min 和 Max,但不確定如何使用。 所以我想獲取過去三周未登錄的用戶,其中LoginDate是用戶日志列表:

    var threeWeeksAgo = DateTime.Now.Date.AddDays(-21);
    //userLogins is a table
         var lastLogins = lowUsers.UserLogins
                .Join(lowUsers.Clients, ul => ul.client, c => c.companyName, (ul, c) => new { ClientId = c.clientID, LoginDate = ul.dateTimeCreated, CompanyName = c.companyName })
                .Where(a => a.LoginDate <= threeWeeksAgo);

如何使用過去三周未登錄的用戶列表檢查 LoginDate。

數據:

Id  UserName LoginDate
1   User1    01/10/2021 13:24
2   User2    02/09/2021 13:24
3   User1    03/10/2021 13:24
4   User1    04/10/2021 13:24
5   User2    03/09/2021 13:24

如果LoginDateDateTime類型,您可以執行以下操作

 var threeWeeksAgo = DateTime.Now.AddDays(-21);
//userLogins is a table
var notLoggedInUsers = userLogins.Where(a=>a.LoginDate < threeWeeksAgo).ToList();

您需要先按客戶分組,為該組的日期排序,然后將上次登錄日期與三周前進行比較。

var threeWeeksAgo = DateTime.Now.Date.AddDays(-21);

//userLogins is a table
var lastLogins = lowUsers.UserLogins
    .Join(lowUsers.Clients, ul => ul.client, c => c.companyName, (ul, c) => new { ClientId = c.clientID, LoginDate = ul.dateTimeCreated, CompanyName = c.companyName })
    .GroupBy(x => x.ClientId)
    .Select(g => new { ClientId = g.Key, LastLoginDate = g.OrderByDescending(x => x.LoginDate).FirstOrDefault()?.LoginDate}) 
    .Where(a => a.LastLoginDate <= threeWeeksAgo);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM