簡體   English   中英

在集合中查找一組項目中的最后一個項目?

[英]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.

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