C # Linq string comparar com indexOf

Eu tenho uma tabela que possui um campo de seqüência de caracteres que contém nomes de host. Na maioria dos casos, são nomes de domínio totalmente qualificados, mas, ao longo dos anos, os bits de domínio após o primeiro "ponto" foram alterados à medida que várias alterações de DNS caíram sobre nós. Então, eu posso ter a máquina "tom" que está na tabela como:

tom.company.com
tom.it.company.com
tom.newComapnyBranding.com
...

Costumo fazer comparações com o nome do host "atual" e com esse armazenamento histórico. Fazendo algo como:

WHERE
    UPPER(SUBSTRING(@foo, 1, CHARINDEX(".", @foo))) = 
    UPPER(SUBSTRING(myDB.myTable.machineName, 1, CHARINDEX(".", myDB.myTable.machineName)))

Ok, estou tentando converter um deles em uma consulta Linq, mas estou encontrando a parte "index". Cheguei tão perto quanto:

myTable.machineName.ToUpper().Substring(0, myTable.machineName.IndexOf("."))
    .Equals(foo.ToUpper().Substring(0, foo.IndexOf(".")))

mas o visual studio está reclamando do "IndexOf". Alega que eu preciso alterar o IndexOf para:

IndexOf(".", StringComparison.Ordinal))

mas quando o executo, recebo a mensagem de exceção:

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

Como você faz esse tipo de substring baseado em indexado no Linq?

questionAnswers(1)

yourAnswerToTheQuestion