.net LINQ:选择唯一值为分钟的日期时间

.net LINQ:选择唯一值为分钟的日期时间,.net,vb.net,linq,datetime,.net,Vb.net,Linq,Datetime,我有一个DateTime对象的列表 我希望使用LINQ将唯一值为分钟的对象选择到单独的列表中 我认为第一步是使用GroupBy()按分钟对项目进行分组。然后使用Distinct()选择原始值。我使用VB.NET。但是我不知道VB.NET语法来编写这个查询,我发现的所有示例都是用C#编写的 有人能帮我吗?谢谢 您可以执行以下操作 Dim list As New List(Of DateTime) list.Add(Now) list.Add(New DateTime(2001, 1, 1, 5,

我有一个DateTime对象的列表

我希望使用LINQ将唯一值为分钟的对象选择到单独的列表中

我认为第一步是使用GroupBy()按分钟对项目进行分组。然后使用Distinct()选择原始值。我使用VB.NET。但是我不知道VB.NET语法来编写这个查询,我发现的所有示例都是用C#编写的


有人能帮我吗?谢谢

您可以执行以下操作

Dim list As New List(Of DateTime)

list.Add(Now)
list.Add(New DateTime(2001, 1, 1, 5, 6, 3))
list.Add(New DateTime(2001, 1, 1, 5, 6, 3))
list.Add(New DateTime(2001, 1, 1, 5, 6, 7))
list.Add(New DateTime(2001, 1, 1, 5, 6, 7))

Dim q = list.GroupBy(Function(d) d.Second).SelectMany(Function(g) g.Take(1)).ToList()
'Outputs a list of 3 dates
'Current Date
'1/1/2001 05:06:03
'1/1/2001 05:06:03

您可以尝试使用并插入所需的C#代码,然后将输出设置为visual basic。这看起来像是ToLookup的作业。@DavidB我检查过了,这是个好主意。这很有效。但是比Daniel关于使用LINQ的回答要慢。只是一件小事-最好是
。选择many(Function(g)g.Take(1))
而不是
。选择(Function(g)g.First())
。创建一个
.First()
可以打破的环境很容易。谢谢,丹尼尔,这正是我想要的!我只是用一种非常严格的方法来设置类型。谢谢你的提示@Enigmativity。我已经修改了答案。还应该补充一点,如果当前日期/时间有3秒或7秒,列表中只会出现两项。