Thank you so much Walaa. It's work
Are you have any suggest about this sort ?
Dim orderFunc = New DbFunctionCall(
"CASE WHEN ({0} = SUBSTRING(SUBSTRING({1}, PATINDEX('%[^-]%', {1}+'.'), 5), PATINDEX('%[^0]%', {1}+'.'), 5)) THEN 0" +
"WHEN ({2}={3} AND {4}={5}) THEN 1" +
"WHEN (LEN(CAST({6} AS nvarchar(50))) = 10 AND CHARINDEX({7}, {6}) = 1) THEN 2" +
"ELSE 3",
New Object() {TZCityFields.ZipCode, LeadFields.Zip _
, TZCityFields.City, LeadFields.City _
, TZCityFields.State, LeadFields.State _
, LeadFields.PrimaryPhone, TZCityFields.AreaCode
})
Dim orderField = TZCityFields.ZipCode.SetExpression(orderFunc)
' Order by Zip -> City,State -> Convert PrimaryPhone to Areacode
Dim orderClause = New SortClause(orderField, Nothing, SortOperator.Ascending)
orderClause.EmitAliasForExpressionAggregateField = True