情况如下:我有大量的数据存储在“mysamples”中,如下所示。我需要对数据做一些查询和报告工作,而且我是Linq的新手。首先,我需要编写一个Linq脚本来提取所有记录的月度年度报告。它是总结“我的样本”中所有样本的所有样本的“价值”(在本年度,按月份分类)。我可以很容易地在vb.net代码中做到这一点,但是我意识到Linq是解决这类问题的正确工具。有人能先给我点什么吗。谢谢。
Public Structure sample
Public Property id As String
Public datapoints As List(Of sampledatapoint)
End Structure
Public Structure sampledatapoint
Public time As DateTime
Public value As Decimal
End Structure
Public mysamples As New List(Of sample)发布于 2016-04-21 10:08:01
Dim sampleQ1 as New sample() With {.id ="2016Q1", .datapoints = New List(Of sampledatapoint)()}
sampleQ1.datapoints.Add(New sampledatapoint() With {.time = New DateTime(2016, 1, 1), .value = 1000})
sampleQ1.datapoints.Add(New sampledatapoint() With {.time = New DateTime(2016, 1, 10), .value = 2000})
sampleQ1.datapoints.Add(New sampledatapoint() With {.time = New DateTime(2016, 2, 1), .value = 500})
sampleQ1.datapoints.Add(New sampledatapoint() With {.time = New DateTime(2016, 3, 7), .value = 750})
Dim sampleQ2 as New sample() With {.id ="2016Q2", .datapoints = New List(Of sampledatapoint)()}
sampleQ2.datapoints.Add(New sampledatapoint() With {.time = New DateTime(2016, 4, 4), .value = 800})
sampleQ2.datapoints.Add(New sampledatapoint() With {.time = New DateTime(2016, 4, 5), .value = 150})
Dim sampleQ4 as New sample() With {.id ="2015Q4", .datapoints = New List(Of sampledatapoint)()}
sampleQ4.datapoints.Add(New sampledatapoint() With {.time = New DateTime(2015, 10, 20), .value = 666})
Dim mysamples As New List(Of sample)
mysamples.Add((sampleQ1))
mysamples.Add((sampleQ2))
mysamples.Add((sampleQ4))
Dim q = From sdp In mysamples.SelectMany(Function(x) x.datapoints).Where(Function(x) x.time.Year = DateTime.Now.Year)
Group By grp = sdp.time.Month Into Group
Select New With {.Month = grp, .Sum = Group.Sum(Function(x) x.value)}
For Each monthlySum In q
Console.WriteLine("Month: {0}, Sum: {1}", monthlySum.Month, monthlySum.Sum)
Next
'Month: 1, Sum: 3000
'Month: 2, Sum: 500
'Month: 3, Sum: 750
'Month: 4, Sum: 950SelectMany能做到这一点。它将所有样本的所有样本都压缩到一个列表中。Group By保持不变。
另外:您是否有理由使用struct而不是class?我建议至少对sample使用一个类,因为它既不代表单个值,也不包含值类型。
https://stackoverflow.com/questions/36761436
复制相似问题