2016-12-04 71 views
0

我有對象的集合:生成日期的集合從對象集合

private ObservableCollection<ObjectClass> myObjectsCollection; 

它包含幾個特性,這其中有一個是Date

public string Date { get; set; } 

集合可以包含多個對象與同一日期。

我想生成一個新的ObservableCollection,它包含來自同一類ObjectClass的新對象,但每個對象只表示一個日期。

例如:假設我有1000個對象,它們在整個集合中共有14個日期。所以新的集合將只包含14個相同類類型的對象。每個新對象將只包含Date屬性。

+1

你如何填充這個集合? –

+0

你是什麼意思? – axcelenator

回答

1

可能要通過數據對象類的組收集和第一需要:

myObjectsCollection.GroupBy(x => x.Date).Select(x => x.First()) 
+0

你好,沒有。例如:假設我有1000個對象,它們在整個集合中共有14個日期。所以新的收藏只能容納14個物品。 – axcelenator

+0

什麼應該包含這14個對象的每一個?你想選擇哪個對象,如果你有兩個ObjectClass用於同一日期 –

+0

'日期'屬性 – axcelenator

1

如果我理解正確的話,你有一些類型的集合,這種類型有一個名爲Date場,這個集合可能具有相同日期的對象。例如,如果您的收藏集有100個項目,其中50個具有相同的日期,則需要編寫一個查詢,以便爲您提供50個項目,而不是100個。在此情況下,@Victor Leontyev回答您只需根據Date財產:

public class MyObject 
{ 
    public DateTime Date { get; set; } 
} 

var list = new ObservableCollection<MyObject>(); 
list.Add(new MyObject { Date = new DateTime(2015, 5, 12) }); 
list.Add(new MyObject { Date = new DateTime(2015, 5, 12) }); 
list.Add(new MyObject { Date = new DateTime(2015, 5, 12) }); 
list.Add(new MyObject { Date = new DateTime(2015, 5, 12) }); 
list.Add(new MyObject { Date = new DateTime(2015, 6, 12) }); 
list.Add(new MyObject { Date = new DateTime(2015, 6, 12) }); 
list.Add(new MyObject { Date = new DateTime(2015, 2, 12) }); 
list.Add(new MyObject { Date = new DateTime(2015, 2, 12) }); 

var newList = list.GroupBy(x => x.Date);