2009-08-24 12 views
10

स्ट्रिंग स्वाभाविक रूप से ऑर्डर करने के लिए LINQ क्वेरी (SQL डेटाबेस से - क्या इससे कोई फर्क पड़ता है?) प्राप्त करने का सबसे आसान तरीका क्या है?LINQ और एक प्राकृतिक सॉर्ट ऑर्डर

उदाहरण के लिए, मैं वर्तमान में ये परिणाम हो रही है:

  • परियोजना 1
  • परियोजना 10
  • परियोजना 2

क्या मैं चाहता हूँ देखने के लिए है यह है:

  • प्रोजेक्ट 1
  • परियोजना 2
  • परियोजना 10

क्वेरी मैं उपयोग कर रहा हूँ यह है:

return from p in dataContext.Projects 
    orderby p.Name 
    select p; 
+0

"स्वाभाविक रूप से" व्यक्तिपरक है। क्या आप इसका वर्णन कर सकते हैं कि आप अधिक विशेष रूप से क्या मतलब रखते हैं? – StingyJack

+0

@StingyJack - एक मानव क्रम क्रम में, कंप्यूटर सॉर्ट ऑर्डर नहीं। – Kieron

+1

एचए - "मानव" सॉर्ट ऑर्डर। आपका मतलब लैटिन शब्दकोश ऑर्डर, केस असंवेदनशील है? क्या आपके पास इन परियोजनाओं के लिए एक आईडी है? – StingyJack

उत्तर

9

कोई अंतर्निहित तरीका नेट ढांचे का उपयोग कर ऐसा करने के लिए नहीं है, लेकिन मेरा सुझाव है विषय और एक ओपन-सोर्स कार्यान्वयन पर चर्चा के लिए आपने Natural Sorting in C# पढ़ा है।

0

मैं पार्टी के लिए कुछ ही साल देर से हूं, लेकिन मैं बस इसी तरह की समस्या को हल करने की कोशिश कर रहा था और यह मेरे लिए काम करता था। आशा है कि किसी और को यह सहायक लगेगा।

कहो आप एक सूची में अपने तार है, कुछ इस तरह का प्रयास करें:

List<string> projects = new List<string> 
{ 
    "Project 1", 
    "Project 10", 
    "Project 2" 
}; 
//Sort by a substring of the string value which omits the non-numeric characters 
IEnumerable<string> sorted = projects.OrderBy(p => p.Substring(p.IndexOf(' ') + 2, p.Length - (p.IndexOf(' ') + 2))); 
संबंधित मुद्दे