मेरे पास एक सारणी है जिसमें एक स्ट्रिंग फ़ील्ड है जिसमें होस्टनाम हैं। वे ज्यादातर पूरी तरह से योग्य डोमेन नाम हैं लेकिन पिछले कुछ वर्षों में डोमेन "बिट" के बाद बिट्स बदल गए हैं क्योंकि विभिन्न 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(".", 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 में अनुक्रमित आधारित सबस्ट्रिंग इस तरह करते हैं?
अपने फॉलो-ऑन सवाल पर,, एक नया सवाल पर ले जाते हैं तो कृपया प्रत्येक प्रश्न के स्वतंत्र और एक स्पष्ट और विशिष्ट विषय के साथ होने के लिए अनुमति देता है, के साथ अन्य लोगों की इजाजत दी समाधान तक पहुंचने के लिए एक ही समस्या (व्यक्तिगत रूप से)। –