Dav*_*vid 2 vb.net asp.net linq-to-sql
我对linq很新,所以这应该很容易回答,但我很难找到答案.
我有以下LINQ语句,它执行简单的linq查询并在asp.net Web表单上分配结果值标签:
Dim db As New MeetingManagerDataContext
Dim q = From s In db.vwRoomAvailabilities _
Where s.MeetingID = lblMeetingID.Text _
Select s.AllRequestedSingles, s.AllRequestedDoubles, s.AllBookedSingles, s.AllBookedDoubles, SinglesNeeded = s.AllRequestedSingles - s.AllBookedDoubles, DoublesNeeded = s.AllRequestedDoubles - s.AllBookedDoubles
lblSinglesRequested.Text = "Singles Requested: " & q.FirstOrDefault.AllRequestedSingles
lblSinglesBooked.Text = "Singles Booked: " & q.FirstOrDefault().AllBookedSingles
lblSinglesNeeded.Text = "Singles Needed: " & q.FirstOrDefault().SinglesNeeded
lblDoublesRequested.Text = "Doubles Requested: " & q.FirstOrDefault().AllRequestedDoubles
lblDoublesBooked.Text = "Doubles Booked: " & q.FirstOrDefault().AllBookedDoubles
lblDoublesNeeded.Text = "Doubles Needed: " & q.FirstOrDefault().DoublesNeeded
Run Code Online (Sandbox Code Playgroud)
最初,只有一行结果,你可以看到我正在使用FirstOrDefault()来获取效果很好的单个值.但是设计已经改变,查询现在可以返回多行.我现在需要按上面的MeetingID分组,并对每个选定的列(iesAllRequestedDoubles)进行SUM.
我发现了大量的分组和总结样本,但似乎没有一个适合这种情况.
你能帮我修改上面的LINQ来对结果值求和,而不是只显示第一行的结果值吗?
试试这个
From s In db.vwRoomAvailabilities
Where s.MeetingID = lblMeetingID.Text
Group by s.MeetingID
into SumAllRequestedDoubles = sum(s.AllRequestedDoubles),
SumAggregate2 = sum(s.SomeField2),
SumAggregate3 = sum(s.SomeField3)
Select SumAllRequestedDoubles, SumAggregate2, SumAggregate3
Run Code Online (Sandbox Code Playgroud)
这将使您开始在该列上执行SUM.
您需要将每个SUM'd列投影到一个新的别名列中(就像我上面所做的那样).
此外,由于您是LINQ-SQL的新手,请查看LinqPad - 它将震撼您的世界.
归档时间: |
|
查看次数: |
2569 次 |
最近记录: |