La cadena de C # Linq se compara con indexOf
Tengo una tabla que tiene un campo de cadena que contiene nombres de host. En su mayoría son nombres de dominio totalmente calificados, pero a lo largo de los años los bits de dominio después del primer "punto" han cambiado a medida que varios cambios de DNS han caído sobre nosotros. Entonces podría tener la máquina "tom" que está en la tabla como:
tom.company.com
tom.it.company.com
tom.newComapnyBranding.com
...
A menudo tengo que hacer comparaciones con el nombre de host "actual" y esta tienda histórica. Haciendo algo como:
WHERE
UPPER(SUBSTRING(@foo, 1, CHARINDEX(".", @foo))) =
UPPER(SUBSTRING(myDB.myTable.machineName, 1, CHARINDEX(".", myDB.myTable.machineName)))
Ok, estoy tratando de convertir uno de estos en una consulta de Linq pero estoy tropezando con la parte de "índice". He llegado tan cerca como:
myTable.machineName.ToUpper().Substring(0, myTable.machineName.IndexOf("."))
.Equals(foo.ToUpper().Substring(0, foo.IndexOf(".")))
pero visual studio se queja de "IndexOf". Afirma que necesito cambiar el IndexOf a:
IndexOf(".", StringComparison.Ordinal))
pero cuando lo ejecuto me sale el mensaje de excepción:
LINQ to Entities does not recognize the method 'Int32 IndexOf(System.String,
System.StringComparison)' method, and this method cannot be translated into
a store expression
¿Cómo se hace este tipo de subcadena indexada en Linq?