Solved

Aggregate, LINQ, c#

Posted on 2014-12-03
4
282 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 32

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 32

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

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
Encryption Decryption in Oracle 12 65
Data Saving(2) 2 29
Protecting vb6 & .Net code Obfuscation 18 56
fomat Json objects 6 18
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.

744 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

13 Experts available now in Live!

Get 1:1 Help Now