Рейтинг@Mail.ru

LINQ+VB.NET: Выбор объектов DateTime() с уникальными значениями минут

Опубликовано в Полезные советы

Допустим, у нас есть упорядоченный список объектов MyList() типа даты: List(of DateTime), и нам нужно выбрать из него только те объекты, которые имеют уникальные значения минут (или часов, или секунд, и т.п.). Выберем только первые встреченные значения с уникальным параметром. Для этого можно воспользоваться языком запросов LINQ и языком VB.NET.

Вариант 1 (самый быстрый)

Dim selected As IEnumerable(Of DateTime) = MyList.GroupBy(Function(d As DateTime) d.TimeStamp.Minute).[Select](Function(g) g.First)

Вариант 2

Dim selected As IEnumerable(Of IGrouping(Of Integer, DateTime)) = MyList.GroupBy(Function(n As DateTime) (n.Minute)).Distinct

Вариант 3 (самый медленный, использует преобразование к типу Lookup())

Dim selected As ILookup(Of Integer, DateTime) = MyList.ToLookup(Of Integer, DateTime)(Function(ByVal x As DateTime) x.Minute, Function(ByVal y As DateTime) y)
Подробнее ...
Подписаться на этот канал RSS