2012-06-14 12 views
7

.NET ASCII table में दिखाई देने वाले तरीके से एसक्यूएल '+' और '^' को अलग क्रम में क्यों क्रमबद्ध करता है या जिस तरह से SQL उन्हें टाइप करता है।.NET कैसे विशेष वर्णों को क्रमबद्ध करता है?

ASCII table में '+' 42 का मूल्य है और '^' 94 का मूल्य है, लेकिन आप इस तरह से कोड चलाते हैं:

var list = new List<string> { "+", "^", "!" }; 
list.Sort(); 

सूची निम्न क्रम में मूल्यों में शामिल होंगे:

{"!", "^", "+"}

LINQ सॉर्ट एक ही परिणाम उत्पन्न करता है। क्या कोई मुझे बता सकता है कि किस तरह का प्रकार .NET करता है?

+1

आप पात्रों को क्रमबद्ध नहीं कर रहे हैं, आप तारों को क्रमबद्ध कर रहे हैं। –

उत्तर

17

.NET ASCII का उपयोग नहीं करता है, यह यूनिकोड का उपयोग करता है। जब आप एक स्ट्रिंग सॉर्ट करते हैं, तो .NET (डिफ़ॉल्ट रूप से) क्रमबद्ध करने के लिए वर्तमान संस्कृति के नियमों का उपयोग करता है। इस मामले में, वे नियम इंगित करते हैं कि "^" "+" से पहले आता है।

var list = new List<string> { "+", "^", "!" }; 
list.Sort(StringComparer.Ordinal); // Order is "!", "+", "^" 
+0

+1। नियमों को सॉर्ट करने के लिए कुछ लिंक समान प्रश्न के उत्तर में पाए जा सकते हैं - http://stackoverflow.com/questions/9475535/order-of-punctuation-marks-vs-letters/9475570#9475570 –

2

यह वर्तमान संस्कृति सेट, CompareInfo संपत्ति में परिभाषित द्वारा परिभाषित किया गया है: आप परिणाम आप "क्रमसूचक" स्ट्रिंग comparer का उपयोग करके की उम्मीद कर सकते हैं। प्रत्येक संस्कृति में तारों के लिए संस्कृति-विशिष्ट सॉर्टिंग नियम होते हैं।

संबंधित मुद्दे