Depending on what you want, I think you wouldn't need the ESCAPE clause.
For example, for this given data at DB:
Address
David
Carla
Cesar
Conie
This query:
LinqMetaData metaData = new LinqMetaData(adapter);
var q = from c in metaData.Customer
where c.Address.StartsWith("c[ae]")
select c;
will returns generate this query:
Query: SELECT [LPLA_1].[CustomerID] AS [CustomerId], [LPLA_1].[CompanyName], [LPLA_1].[ContactName], [LPLA_1].[ContactTitle], [LPLA_1].[Address], [LPLA_1].[City], [LPLA_1].[Region], [LPLA_1].[PostalCode], [LPLA_1].[Country], [LPLA_1].[Phone], [LPLA_1].[Fax] FROM [Northwind].[dbo].[Customers] [LPLA_1] WHERE ( ( ( ( [LPLA_1].[Address] LIKE @Address1))))
Parameter: @Address1 : String. Length: 6. Precision: 0. Scale: 0. Direction: Input. Value: "c[ae]%".
And returns this data:
- Carla
- Cesar
So the brackets are indeed a way to scape wildcars and also to make slices (a-b) and such things. So maybe I didn't understand your question. Could you please post the query you are trying to achieve and some sample data found by your sql query?