[英]get only latest items for each id type
我有一個對象集合,我需要檢索上一次為相同類型(相似ID)創建的對象。 我在其他帖子中嘗試了以下想法,但未獲得預期結果。 還有其他建議嗎?
提前致謝
void Main()
{
List<data_item> itemlist1= new List<data_item>();
itemlist1.Add(new UserQuery.data_item
{
id=1,
Creationdate = new DateTime(2001, 6, 1),
Size=28373
})
;
itemlist1.Add(new UserQuery.data_item
{
id=2,
Creationdate = new DateTime(1992, 6, 1),
Size=2000
})
;
itemlist1.Add(new UserQuery.data_item
{
id=2,
Creationdate = new DateTime(2002, 6, 1),
Size=300
})
;
itemlist1.Add(new UserQuery.data_item
{
id=1,
Creationdate = new DateTime(2005, 6, 1),
Size =400
})
;
itemlist1.Add(new UserQuery.data_item
{
id=3,
Creationdate = new DateTime(1999, 6, 1),
Size =10000
})
;
itemlist1.Add(new UserQuery.data_item
{
id=3,
Creationdate = new DateTime(2003, 6, 1),
Size =5000
})
;
itemlist1.Add(new UserQuery.data_item
{
id=3,
Creationdate = new DateTime(1999, 4, 1),
Size=3000
})
;
itemlist1.Add(new UserQuery.data_item
{
id=5,
Creationdate = new DateTime(1999, 6, 5),
Size=230
})
;
itemlist1.Add(new UserQuery.data_item
{
id=4,
Creationdate = new DateTime(1999, 6, 1),
Size =8700
})
;
itemlist1.Add(new UserQuery.data_item
{
id=5,
Creationdate = new DateTime(1991, 6, 1),
Size =6000
})
;
itemlist1.Dump();
var result = from t in itemlist1 group t by new UserQuery.data_item
{ id=t.id,
Creationdate=t.Creationdate
} into gt
select gt.OrderByDescending(d=>d.Creationdate).First();
result.Distinct().Dump();
}
// Define other methods and classes here
public class data_item
{
public int id {get;set;}
public DateTime Creationdate {get;set;}
public int? Size {get;set;}
}
這是您需要的嗎?
var group = itemlist1.GroupBy(x=>x.id); // grouped by id
var newList =
group.Select(g => g.OrderByDescending(y => y.Creationdate).First());
它會通過按ID對它們進行分組,然后從該列表中僅獲取最新的ID,然后選擇到新列表,從而獲取所有ID的最新ID
OrderByDescending
是按日期降序排列的,因此First
是采用最近的日期。 Select
是將表達式結果選擇到新列表中,因此所有ID的組都應有最新項的列表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.