I have Data In List 這是員工的進出資訊。
Datetime User_id UserName Tna
--------------------------------------------------------------------------------
2022-03-15 08:30:23 01 John null
2022-03-15 09:43:40 01 John null
2022-03-15 10:16:52 01 John null
2022-03-15 13:45:23 01 John null
2022-03-15 15:38:23 01 John null
2022-03-15 17:36:23 01 John null
2022-03-15 08:31:23 02 Eva null
2022-03-15 10:16:52 02 Eva null
2022-03-15 13:45:23 02 Eva null
2022-03-15 15:38:23 02 Eva null
2022-03-15 17:30:23 02 Eva null
從 API 檢索的 List 中的資訊。
我想知道如何過濾串列中的專案。按時間過濾的第一次簽入和最后一次簽出,如何使用LINQ獲得這樣的輸出?
Datetime User_id UserName Tna
--------------------------------------------------------------------------------
2022-03-15 08:30:23 01 John IN
2022-03-15 17:36:23 01 John OUT
2022-03-15 08:31:23 02 Eva IN
2022-03-15 17:30:23 02 Eva OUT
uj5u.com熱心網友回復:
您可能希望按人分組,然后選擇每個組的第一個和最后一個。
假設
每個人至少有一個進出入口。
偽代碼
var result = lst.GroupBy(x => x.User_id)
.Select(g => g.OrderBy(x => x.Datetime))
.Select(g => new[] { g.First() }.Concat(new[] { g.Last() }));
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/444625.html
