I wish that the Transact-SQL LIKE operator [TEXT](http://msdn.microsoft.com/en-us/library/ms179859.aspx) is fully supported by EF.
The following three ways are known to me:
```
var ordersQuery = context.Orders.Where(o => o.ShipName.StartsWith("Welling"));
...
FROM [dbo].[Orders] AS [Extent1]
WHERE [Extent1].[ShipName] LIKE N'Welling%'
var ordersQuery = context.Orders.Where(o => o.ShipName.EndsWith("Welling"));
...
FROM [dbo].[Orders] AS [Extent1]
WHERE [Extent1].[ShipName] LIKE N'%Welling'
var ordersQuery = context.Orders.Where(o => o.ShipName.Contains("Welling"));
...
FROM [dbo].[Orders] AS [Extent1]
WHERE [Extent1].[ShipName] LIKE N'%Welling%'
```
Unfortunately, the following is not the expected result:
```
var ordersQuery = context.Orders.Where(o => o.ShipName.Contains("We%ng"));
...
FROM [dbo].[Orders] AS [Extent1]
WHERE [Extent1].[ShipName] LIKE N'%We~%ng%' ESCAPE N'~'
```
The same Problem:
```
var ordersQuery = context.Orders.Where(o => o.ShipName.Contains("Well_ng"));
...
FROM [dbo].[Orders] AS [Extent1]
WHERE [Extent1].[ShipName] LIKE N'%Well~_ng%' ESCAPE N'~'
var ordersQuery = context.Orders.Where(o => o.ShipName.Contains("Well[h-k]ng"));
...
FROM [dbo].[Orders] AS [Extent1]
WHERE [Extent1].[ShipName] LIKE N'%Well~[h-k]ng%' ESCAPE N'~'
```
The SqlMethods.Like Method [TEXT](http://msdn.microsoft.com/en-us/library/system.data.linq.sqlclient.sqlmethods.like.aspx) is unsupported outside of a LINQ to SQL context.
The following three ways are known to me:
```
var ordersQuery = context.Orders.Where(o => o.ShipName.StartsWith("Welling"));
...
FROM [dbo].[Orders] AS [Extent1]
WHERE [Extent1].[ShipName] LIKE N'Welling%'
var ordersQuery = context.Orders.Where(o => o.ShipName.EndsWith("Welling"));
...
FROM [dbo].[Orders] AS [Extent1]
WHERE [Extent1].[ShipName] LIKE N'%Welling'
var ordersQuery = context.Orders.Where(o => o.ShipName.Contains("Welling"));
...
FROM [dbo].[Orders] AS [Extent1]
WHERE [Extent1].[ShipName] LIKE N'%Welling%'
```
Unfortunately, the following is not the expected result:
```
var ordersQuery = context.Orders.Where(o => o.ShipName.Contains("We%ng"));
...
FROM [dbo].[Orders] AS [Extent1]
WHERE [Extent1].[ShipName] LIKE N'%We~%ng%' ESCAPE N'~'
```
The same Problem:
```
var ordersQuery = context.Orders.Where(o => o.ShipName.Contains("Well_ng"));
...
FROM [dbo].[Orders] AS [Extent1]
WHERE [Extent1].[ShipName] LIKE N'%Well~_ng%' ESCAPE N'~'
var ordersQuery = context.Orders.Where(o => o.ShipName.Contains("Well[h-k]ng"));
...
FROM [dbo].[Orders] AS [Extent1]
WHERE [Extent1].[ShipName] LIKE N'%Well~[h-k]ng%' ESCAPE N'~'
```
The SqlMethods.Like Method [TEXT](http://msdn.microsoft.com/en-us/library/system.data.linq.sqlclient.sqlmethods.like.aspx) is unsupported outside of a LINQ to SQL context.