Ich habe eine Tabelle, die ein String-Feld enthält, das Hostnamen enthält. Sie sind meist voll qualifizierte Domainnamen, aber im Laufe der Jahre haben sich die Domain-Bits nach dem ersten "Punkt" geändert, da verschiedene DNS-Änderungen auf uns gefallen sind. So könnte ich die Maschine „tom“, die in der Tabelle ist als:C# Linq string Vergleich mit indexOf
tom.company.com
tom.it.company.com
tom.newComapnyBranding.com
...
Ich habe oft Vergleiche tun gegen den „aktuellen“ Host-Namen und dieser historischen Speicher. Doing so etwas wie:
WHERE
UPPER(SUBSTRING(@foo, 1, CHARINDEX(".", @foo))) =
UPPER(SUBSTRING(myDB.myTable.machineName, 1, CHARINDEX(".", myDB.myTable.machineName)))
Ok, ich versuche, eine davon in eine Linq-Abfrage zu konvertieren, sondern auf dem „Index“ Teil bin Stolpern. Ich bin so nah gekommen wie:
myTable.machineName.ToUpper().Substring(0, myTable.machineName.IndexOf("."))
.Equals(foo.ToUpper().Substring(0, foo.IndexOf(".")))
aber Visual Studio beschwert sich über "IndexOf". Sie behauptet, dass ich die IndexOf ändern müssen:
IndexOf(".", StringComparison.Ordinal))
, aber wenn ich es laufen bekomme ich die Ausnahmemeldung:
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
Wie machen Sie diese Art von indiziert basierend Teilzeichenfolge in Linq?
Auf Ihrer Follow-on-Frage, bitte an eine neue Frage bewegen, jede Frage erlaubt, unabhängig zu sein und mit einem klaren und bestimmten Thema, so dass andere Personen mit der das gleiche Problem (individuell), um die Lösungen zu erreichen. –