> ## Content Index
> Fetch the complete content index at: https://blogs.remobjects.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Left Outer Joins in DA LINQ.
- URL: https://blogs.remobjects.com/2010/01/27/outer-left-joins-in-dalinq/
- Published: 2010-01-27T11:35:21.000Z
- Updated: 2018-08-22T06:17:46.000Z
- Author: alexk
- Tags: #Import 2026-08-17 20:17

In terms of improving *DA LINQ*, I’m happy to announce that i have just committed improved support for the LEFT OUTER JOIN in the next release of the [Data Abstract for .NET](http://www.dataabstract.com/net?ref=blogs.remobjects.com).

We can compose Left Outer join query by using *DefaultIfEmpty* standard query operator. See the sample below:

| var query \=from c in lrda.GetTable()where c.CustomerID\=="PARIS"join o in lrda.GetTable() on c.CustomerID equals o.CustomerIDinto ords from o in ords.DefaultIfEmpty()selectnew{c.CustomerID, o.EmployeeID}; |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

Notice that we are using an \*\*into\*\* clause to direct the matching join results into a temporary sequence \*ords\*. The \*DefaultIfEmpty\* operator will be applied onto each item of that sequence, so if the record is missing from the joined results, a default value will be provided.

The *DA LINQ* query above will be translated into following *DA SQL* statement that will be passed to the *DASql*engine.

| SELECT\[t0\].\[CustomerID\],\[t1\].\[EmployeeID\]FROM\[Customers\]AS\[t0\]LEFTOUTERJOIN\[Orders\]AS\[t1\]ON(\[t1\].\[CustomerID\]\=\[t0\].\[CustomerID\])WHERE(\[t0\].\[CustomerID\]\= :p0)\--- :p0\='PARIS' |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

This improvement will be in the next release.

and it will execute against the database with the expected result:

| CustomerID EmployeeID \---------- ----------- PARIS NULL |
| -------------------------------------------------------- |