vb.net :left out join
SELECT
dbo.Orders.OrderID
, dbo.Customers.CompanyName
, dbo.Orders.CustomerID
, dbo.[Order Details].ProductID
, dbo.[Order Details].UnitPrice
, dbo.[Order Details].Quantity
, dbo.[Order Details].Discount
, dbo.Customers.ContactName
, dbo.Customers.ContactTitle
, dbo.Customers.Address
FROM
dbo.Orders
LEFT JOIN dbo.[Order Details]
ON dbo.Orders.OrderID = dbo.[Order Details].OrderID
LEFT JOIN dbo.Customers
ON dbo.Orders.CustomerID = dbo.Customers.CustomerID
where dbo.Orders.OrderID <= 10250
ーーーーーー ↓↓↓↓↓↓↓↓↓↓
Dim query222 = From order In db.Orders
From vendor In
db.Order_Details.Where(Function(v) v.OrderID = order.OrderID).DefaultIfEmpty()
From status In
db.Customers.Where(Function(s) s.CustomerID = order.CustomerID).DefaultIfEmpty()
Select New QueryResult With {.OrderID = order.OrderID, .CustomerID = order.CustomerID, .ProductID = vendor.ProductID, .CustomerName = status.CompanyName}
Dim where = query222.Where(Function(tt) tt.OrderID <= 10250)
Dim lst = where.ToList()
↓↓↓
SELECT
[Extent1].[OrderID] AS [OrderID]
, CAST([Extent1].[OrderID] AS nvarchar(max)) AS [C1]
, [Extent1].[CustomerID] AS [CustomerID]
, CAST([Extent2].[ProductID] AS nvarchar(max)) AS [C2]
, [Extent3].[CompanyName] AS [CompanyName]
FROM
[dbo].[Orders] AS [Extent1]
LEFT OUTER JOIN [dbo].[Order Details] AS [Extent2]
ON [Extent2].[OrderID] = [Extent1].[OrderID]
LEFT OUTER JOIN [dbo].[Customers] AS [Extent3]
ON [Extent3].[CustomerID] = [Extent1].[CustomerID]
WHERE
CAST(
CAST([Extent1].[OrderID] AS nvarchar(max)) AS float
) <= cast(10250 as float (53))
ーーーーーー
Models:QueryResult.vb
Public Class QueryResult
Property OrderID As String
Property CustomerID As String
Property CustomerName As String
Property ProductID As String
Property ProductName As String
Property UnitPrice As String
End Class
-----------------------------------------------------------------------------------------
c#.net :
var query =
from order in dc.Orders
from vendor
in dc.Vendors
.Where(v => v.Id == order.VendorId)
.DefaultIfEmpty()
from status
in dc.Status
.Where(s => s.Id == order.StatusId)
.DefaultIfEmpty()
select new { Order = order, Vendor = vendor, Status = status }
//Vendor and Status properties will be null if the left join is null
------------------------------------------------------------------------------------------------
f1 like '%A%' or f1 like '%O%'
Dim aa As String = "A,O"
Dim whereCondition As String() = aa.Split(",")
Dim query222 = (From order In db.Orders
From vendor In
db.Order_Details.Where(Function(v) v.OrderID = order.OrderID).DefaultIfEmpty()
From status In
db.Customers.Where(Function(s) s.CustomerID = order.CustomerID).DefaultIfEmpty()
Select New QueryResult With {.OrderID = order.OrderID, .CustomerID = order.CustomerID,
.ProductID = vendor.ProductID, .CustomerName = status.CompanyName}
).Where(Function(tt) tt.OrderID <= 10250)
Dim queryP1 = query222.Where(Function(v) v.CustomerID.Contains("A")).ToList()
Dim queryP2 = query222.Where(Function(v) v.CustomerID.Contains("O")).ToList()
Dim all = queryP1.Union(queryP2)
Dim lst = all.ToList()