2016-12-04 5 views
0

У меня есть коллекция объектов:Сформировать набор дат из коллекции объектов

private ObservableCollection<ObjectClass> myObjectsCollection; 

Он содержит несколько свойств, которые один из них является Date:

public string Date { get; set; } 

Коллекция может содержать несколько объектов с той же датой.

Я хочу сгенерировать новый ObservableCollection, который содержит новые объекты из того же класса ObjectClass, но каждый объект представляет собой только одну дату.

Например: предположим, что у меня есть 1000 объектов, которые содержат в общей сложности 14 дат по всей коллекции. Таким образом, новая коллекция будет содержать только 14 объектов одного типа. Каждый новый объект будет содержать только Date.

+1

Как вы заполняете эту коллекцию? –

+0

Что это значит? – axcelenator

ответ

1

Возможно, вы хотите коллекции группового Objectclass по данным и принять первый:

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 property:

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); 
Смежные вопросы