How to: Retrieve Many Objects At Once (LINQ to SQL)

You can retrieve many objects in one query by using LoadWith.

Example

The following code uses the LoadWith method to retrieve both Customer and Order objects.

Dim db As New Northwnd("c:\northwnd.mdf")
Dim ds As DataLoadOptions = New DataLoadOptions()
ds.LoadWith(Of Customer)(Function(c) c.Orders)
ds.LoadWith(Of Order)(Function(o) o.OrderDetails)
db.LoadOptions = ds

Dim custQuery = From cust In db.Customers() _
                Where cust.City = "London" _
                Select cust

For Each custObj In custQuery
    Console.WriteLine("Customer ID: " & custObj.CustomerID)

    For Each ord In custObj.Orders
        Console.WriteLine(vbTab & "Order ID: " & ord.OrderID)

        For Each detail In ord.OrderDetails
            Console.WriteLine(vbTab & vbTab & _
                        "Product ID: {0}", detail.ProductID)
        Next 
    Next 
Next
Northwnd db = new Northwnd(@"northwnd.mdf");
DataLoadOptions ds = new DataLoadOptions();
ds.LoadWith<Customer>(c => c.Orders);
ds.LoadWith<Order>(o => o.OrderDetails);
db.LoadOptions = ds;

var custQuery =
    from cust in db.Customers
    where cust.City == "London" 
    select cust;

foreach (Customer custObj in custQuery)
{
    Console.WriteLine("Customer ID: {0}", custObj.CustomerID);
    foreach (Order ord in custObj.Orders)
    {
        Console.WriteLine("\tOrder ID: {0}", ord.OrderID);
        foreach (OrderDetail detail in ord.OrderDetails)
        {
            Console.WriteLine("\t\tProduct ID: {0}", detail.ProductID);
        }
    }
}

See Also

Other Resources

Query Concepts in LINQ to SQL