我有一张表格,其中有一个字符串字段保存了主机名。它们大多数是完全合格的域名,但随着各种DNS更改的影响,第一个“点”后面的域名位已经发生变化多年。所以,我在表格中可能会看到名为“tom”的机器,它的主机名可能如下所示:
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(".")))
但是Visual Studio会提示“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中如何进行基于索引的子字符串操作?