मुझे संदेह है कि पिछले मामले में "-" संस्कृति-विशिष्ट सेटिंग्स (शायद पहले "तारों" के विपरीत "डैश" के विपरीत) के रूप में अलग-अलग तरीके से व्यवहार किया जाता है। MSDN warns इस बारे में:
तुलना प्राप्त करने के लिए वर्तमान संस्कृति का उपयोग करता है संस्कृति विशिष्ट ऐसे आवरण नियमों और अलग-अलग पात्रों की वर्णमाला क्रम के रूप में जानकारी। उदाहरण के लिए, एक संस्कृति निर्दिष्ट कर सकती है कि वर्णों के कुछ संयोजनों को एक वर्ण के रूप में माना जा सकता है, या अपरकेस और लोअरकेस वर्णों की तुलना किसी विशेष तरीके से की जाती है, या किसी वर्ण का क्रमबद्ध क्रम वर्ण पर निर्भर करता है जो पहले या इसका पालन करें।
इसके अलावा this MSDN page में देखें: शब्द प्रकार, स्ट्रिंग प्रकार, और क्रमसूचक प्रकार:
.नेट फ्रेमवर्क छँटाई के पास तीन अलग तरीके का उपयोग करता है। शब्द सॉर्ट एक संस्कृति-संवेदनशील तारों की तुलना करता है। कुछ nonalphanumeric वर्णों में उन्हें निर्दिष्ट विशेष वजन हो सकता है; उदाहरण के लिए, हाइफ़न ("-") में बहुत छोटा वजन दिया जा सकता है ताकि "कोऑप" और "सह-सेशन" क्रमबद्ध सूची में एक दूसरे के बगल में दिखाई दे। स्ट्रिंग सॉर्ट शब्द सॉर्ट के समान है, सिवाय इसके कि कोई विशेष मामला नहीं है; इसलिए, सभी nonalphanumeric प्रतीक सभी अल्फान्यूमेरिक वर्णों से पहले आते हैं। सामान्य क्रम स्ट्रिंग के प्रत्येक तत्व के यूनिकोड मानों के आधार पर तारों की तुलना करता है।
तो, शब्द को अधिक "प्राकृतिक" बनाने के लिए, हाइफ़न को डिफ़ॉल्ट सॉर्ट मोड में एक विशेष उपचार मिलता है।
यदि आप विशेष रूप से इसे चालू "सामान्य" क्रमसूचक प्रकार प्राप्त कर सकते हैं:
Console.WriteLine(string.Compare("a.", "a-")); //1
Console.WriteLine(string.Compare("a.a", "a-a")); //-1
Console.WriteLine(string.Compare("a.", "a-", StringComparison.Ordinal)); //1
Console.WriteLine(string.Compare("a.a", "a-a", StringComparison.Ordinal)); //1
क्रमसूचक तुलना उपयोग का उपयोग कर मूल संग्रह क्रमबद्ध करने के लिए:
items.Sort(StringComparer.Ordinal);
स्रोत
2012-02-20 01:20:58
धन्यवाद जेरेड, क्या आप मुझे बता सकते हैं कि डेटा डेटाटेबल 'डेटाटेबल डेटाटेबल = नया डेटाटेबल() के कॉलम में डेटा कैसे सॉर्ट कर सकता है; डेटाटेबल। कॉलम। जोड़ें ("आइटम", टाइपऑफ (स्ट्रिंग)); डेटारो = डेटाटेबल.NewRow(); डेटारो ["आइटम"] = "ए-ए"; डेटाटेबल। पंक्तियां जोड़ें (डेटारो); डेटारो = डेटाटेबल.NewRow(); डेटारो ["आइटम"] = "ए.ए"; डेटाटेबल। पंक्तियां जोड़ें (डेटारो); डेटारो [] पंक्तियां = डेटाटेबल। चयन करें ("", "आइटम एएससी"); ' – Satya