[英]Finding last item of a set of items within a collection?
我有一個帶有鑰匙和“序列”號的項目集合。 我正在嘗試為每個鍵找到帶有“最后一個”序列號的項目...但是序列號在“窗口”內(因為它們基於日期)。
示例數據
Key Seq other data.....
___ ___ _________________
ABC 4
ABC 5
ABC 6
FGH 1
FGH 2
FGH 3
FGH 4
FGH 5
FGH 6
FGH 7
FGH 8
FGH 9
FGH 10
OPQ 6
RST 3
RST 4
我會尋找結果:
ACB 6
FGH 10
OPQ 6
RST 4
我可以通過一個接一個地循環遍歷每個鍵來實現,但是似乎必須有一種更簡潔的方法。
是否保證項目可以在原始數據中排序?
如果是這樣,那么您可以這樣做:
var result = items.GroupBy(item => item.Key).Select(group => group.Last());
如果最初它們可能會出現故障,那么這將起作用:
var result = items.GroupBy(item => item.Key)
.Select(group => group.OrderByDescending(item => item.Seq).First());
您可以嘗試以下代碼:
collection
.GroupBy(x => x.Key)
.Select(x => new { Key = x.Key, MaxSeq = x.Max(e => e.Seq));
您也可以通過Linq來執行此操作:如果要選擇最后一個,則此代碼
var result = from data in YourObject
group data by data.Key into item
select new { Key = item.Key, Seq = item.Last().Seq, OtherDataOjbect= item.Last().OtherDataOjbect };
如果要選擇最大值,請使用以下命令:
var result = from data in YourObject
group data by data.Key into item
select new { Key = item.Key, Seq = item.Max(x => x.Seq), obj = item.Single(x => x.Seq == item.Max(z => z.Seq)).obj };
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.