благодарю вас. никогда не знал о функциях Sql раньше.

я есть таблица со строковым полем, содержащим имена хостов. В основном это полностью квалифицированные доменные имена, но с годами биты домена после первой «точки» менялись, поскольку на нас падали различные изменения DNS. Так что у меня может быть машина "том", которая находится в таблице как:

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

Мне часто приходится сравнивать «текущее» имя хоста и это историческое хранилище. Делать что-то вроде:

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

Хорошо, я пытаюсь преобразовать один из них в запрос Linq, но спотыкаюсь о части индекса. Я подошел так близко, как:

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

но визуальная студия жалуется на "IndexOf". Он утверждает, что мне нужно изменить IndexOf на:

IndexOf(".", StringComparison.Ordinal))

но когда я запускаю его, я получаю сообщение об исключении:

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

Как вы делаете этот вид индексированной подстроки в Linq?

Ответы на вопрос(1)

Ваш ответ на вопрос