Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 303
  • Last Modified:

Aggregate, LINQ, c#

The following code finds a list of Quantity values ok.

Question: At line 2, how aggregate could be applied to this code to get total quantity?

            Dim s List(Of Order)= (From o In db.Orders Where o.ID = 2).ToList()

            Dim sum = From o In s.OrderItems Select Total = o.Quantity

Open in new window

0
Mike Eghtebas
Asked:
Mike Eghtebas
  • 2
2 Solutions
 
it_saigeDeveloperCommented:
Are you looking for something like this:
Imports System.Linq

Module Module1
	Private orders As New List(Of Order) From _
	 { _
	  New Order() With {.ID = 1, .Quantity = 5}, _
	  New Order() With {.ID = 2, .Quantity = 12}, _
	  New Order() With {.ID = 3, .Quantity = 7}, _
	  New Order() With {.ID = 2, .Quantity = 2}, _
	  New Order() With {.ID = 1, .Quantity = 1}, _
	  New Order() With {.ID = 3, .Quantity = 8} _
	 }

	Sub Main()
		Console.WriteLine(String.Format("Quantity of Orders for OrderID 2 = {0}", (Aggregate order As Order In orders Where order.ID.Equals(2) Into Sum(order.Quantity))))
		Console.ReadLine()
	End Sub
End Module

Class Order
	Property ID() As Integer
	Property Quantity() As Integer
End Class

Open in new window


Produces the following output:Capture.JPG
-saige-
0
 
Mike EghtebasDatabase and Application DeveloperAuthor Commented:
Hi Saige,

Orders is in Entity Framework define by db and has data in it.

Dim db As New TestDatabaseEntities


I want to pull that data. If I were doing it in SQL:

Select Sum(o.Quantity) From tblOrders  o Where o.ID =2

or

Select o,ID, Sum(o.Quantity) From tblOrders  Group By o.ID Having ID =2
0
 
Fernando SotoCommented:
Hi eghtebas;

Try these out, it should give you what you are looking for.

'' Select Sum(o.Quantity) From tblOrders  o Where o.ID =2
Dim sumQuty = (From o In db.tblOrders
               Where o.ID = 2
               Select o.Quantity).Sum()


'' Select o,ID, Sum(o.Quantity) From tblOrders  Group By o.ID Having ID =2               
Dim sumQuty2 = From o In db.tblOrders
               Group o By ID = o.ID Into orderGroup = Group
               Where ID = 2
               Select ID, sumQuty = orderGroup.Sum(Function(q) q.Quantity)

Open in new window

0
 
it_saigeDeveloperCommented:
Well you should still be able to use Aggregate, try:
'  This is the list of orders.
Dim s List(Of Order)= (From o In db.Orders Where o.ID = 2).ToList()
'  So long as Quantity is a property of order, we can sum it.
Dim sum = (Aggregate o In s Into Sum(o.Quantity))

Open in new window


-saige-
0

Featured Post

NEW Veeam Agent for Microsoft Windows

Backup and recover physical and cloud-based servers and workstations, as well as endpoint devices that belong to remote users. Avoid downtime and data loss quickly and easily for Windows-based physical or public cloud-based workloads!

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now