Solved

Aggregate, LINQ, c#

Posted on 2014-12-03
4
285 Views
Last Modified: 2016-02-15
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
Comment
Question by:Mike Eghtebas
  • 2
4 Comments
 
LVL 33

Expert Comment

by:it_saige
ID: 40479887
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
 
LVL 33

Author Comment

by:Mike Eghtebas
ID: 40479923
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
 
LVL 62

Accepted Solution

by:
Fernando Soto earned 300 total points
ID: 40479986
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
 
LVL 33

Assisted Solution

by:it_saige
it_saige earned 200 total points
ID: 40479987
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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
The ECB site provides FX rates for major currencies since its inception in 1999 in the form of an XML feed. The files have the following format (reducted for brevity) (CODE) There are three files available HERE (http://www.ecb.europa.eu/stats/exch…
Windows 10 is mostly good. However the one thing that annoys me is how many clicks you have to do to dial a VPN connection. You have to go to settings from the start menu, (2 clicks), Network and Internet (1 click), Click VPN (another click) then fi…
Hi friends,  in this video  I'll show you how new windows 10 user can learn the using of windows 10. Thank you.

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now