Celebrate National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Linq query for parent & Child tables with aggregates

Posted on 2010-11-11
3
Medium Priority
?
621 Views
Last Modified: 2012-05-10
Hey,

I have 2 tables (PTO [Parent] &  PTODetails [Child]) that have a 1 to many relationship between them.  I would like to get the information from the parent table and some aggregated information from the child table using linq.  

If i where using SQL i would write something like this:

Select PTO.ID, Max(PTODetails.RequestDate), Min(PTODetails.RequestDate), PTO.PersonID
From  PTO Inner Join PTODetails on PTO.ID = PTODetails.PTOID
Where PTO.RequestDate > GetDate()

How would i go about writting something like that in LINQ?

Thanks in advance...

0
Comment
Question by:MRS
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 96

Accepted Solution

by:
Bob Learned earned 1000 total points
ID: 34119837
There are a whole heap of resources on LINQ, so you just need to find the right one.

101 LINQ Samples
http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx

Converting SQL to LINQ, Part 5: GROUP BY and HAVING (Bill Horst)
http://blogs.msdn.com/b/vbteam/archive/2007/12/18/converting-sql-to-linq-part-5-group-by-and-having-bill-horst.aspx

From Shipment In OrderTable 
Group OrderCost = Shipment.Cost By Shipment.ShippingZip 
Into Total = Sum(OrderCost), Average(OrderCost)

Open in new window

0
 
LVL 27

Assisted Solution

by:MikeToole
MikeToole earned 1000 total points
ID: 34119891
Here's a simple example
Dim Customers As New List(Of Customer)
    Dim Orders As New List(Of Order)
    Private Sub LoadCustomers()
        Customers.Add(New Customer With {.CustomerID = 1, .Name = "AAA"})
        Customers.Add(New Customer With {.CustomerID = 2, .Name = "BBB"})
        Customers.Add(New Customer With {.CustomerID = 3, .Name = "CCC"})
        Orders.Add(New Order With {.CustomerID = 2, .OrderID = 23})
        Orders.Add(New Order With {.CustomerID = 1, .OrderID = 11})
        Orders.Add(New Order With {.CustomerID = 1, .OrderID = 13})
        Orders.Add(New Order With {.CustomerID = 2, .OrderID = 27})
        Orders.Add(New Order With {.CustomerID = 2, .OrderID = 24})
        Orders.Add(New Order With {.CustomerID = 2, .OrderID = 26})
        Orders.Add(New Order With {.CustomerID = 2, .OrderID = 25})
        Orders.Add(New Order With {.CustomerID = 3, .OrderID = 39})
        Orders.Add(New Order With {.CustomerID = 1, .OrderID = 12})
        Orders.Add(New Order With {.CustomerID = 3, .OrderID = 31})
        Orders.Add(New Order With {.CustomerID = 3, .OrderID = 32})
        Orders.Add(New Order With {.CustomerID = 2, .OrderID = 22})
    End Sub

    Public Sub GroupLinq()
        LoadCustomers()
        Dim Q = From Cust In Customers, Ord In Orders
                Where Cust.CustomerID = Ord.CustomerID
                Group Ord By Cust Into
                MaxID = Max(Ord.OrderID),
                MinID = Min(Ord.OrderID)

        For Each obj In Q
            Console.WriteLine(String.Format("Customer: {0}, Min: {1}, Min: {2}", obj.Cust.CustomerID, obj.MinID, obj.MaxID))
        Next
        Console.ReadLine()
    End Sub

Open in new window

0
 

Author Closing Comment

by:MRS
ID: 34120594
Thank you both.  I am not sure what exactly i was missing, but both of your examples got me what i needed..

Thanks again
0

Featured Post

Does Your Cloud Backup Use Blockchain Technology?

Blockchain technology has already revolutionized finance thanks to Bitcoin. Now it's disrupting other areas, including the realm of data protection. Learn how blockchain is now being used to authenticate backup files and keep them safe from hackers.

Question has a verified solution.

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

Ever needed a SQL 2008 Database replicated/mirrored/log shipped on another server but you can't take the downtime inflicted by initial snapshot or disconnect while T-logs are restored or mirror applied? You can use SQL Server Initialize from Backup…
Ready to get certified? Check out some courses that help you prepare for third-party exams.
Familiarize people with the process of utilizing SQL Server functions from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Ac…
Via a live example, show how to set up a backup for SQL Server using a Maintenance Plan and how to schedule the job into SQL Server Agent.

730 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