پس از مدت ها انتظار، اولین پیش نمایش دات نت 10 منتشر شد. این نسخهی جدید شامل کتابخانههای جدید دات نت، برخی از ویژگیهای جدید سی شارپ 14 و موارد دیگر است. در این مطلب، به یکی از ویژگی های جدید کتابخانه دات نت میپردازیم که در ابتدا در سال 2015 درخواست شده بود و در نهایت در دات نت 10 گنجانده شده است.
مشکل مرتب سازی رشته ها به صورت پیش فرض
فرض کنید لیست زیر از رشتهها را داریم:
List<string> strings =
[
"3",
"5",
"05",
"10",
"11"
];اگر این لیست را با استفاده از روش پیش فرض مرتب سازی رشتهها (به صورت الفبایی) مرتب کنیم، نتیجه به صورت زیر خواهد بود:
05
10
11
3
5
همانطور که میبینید، این ترتیب از نظر عددی صحیح نیست. به عنوان مثال، "3" از "05" کوچکتر است و "5" و "05" از نظر عددی برابر هستند.
راه حل: مقایسه کننده مرتب سازی عددی جدید
دات نت 10 یک مقایسهی کننده جدید به نام NumericOrdering برای مقایسه رشتهها ارائه میدهد. این مقایسه کننده، رشتهها را بر اساس مقدار عددی آنها مرتب می کند. برای استفاده از این مقایسه کننده، باید از متد StringComparer.Create به همراه گزینه CompareOptions.NumericOrdering استفاده کنید:
StringComparer numericStringComparer =
StringComparer.Create(CultureInfo.CurrentCulture, CompareOptions.NumericOrdering);سپس، می توانید از این مقایسه کننده برای مرتب سازی لیست رشته ها استفاده کنید:
IOrderedEnumerable<string> orderedStrings = strings.Order(numericStringComparer);
با استفاده از این مقایسه کننده، نتیجه مرتب سازی به صورت زیر خواهد بود:
3
5
05
10
11
همانطور که میبینید، این ترتیب از نظر عددی صحیح است.
مزایای استفاده از مرتب سازی عددی:
- مرتب سازی صحیح رشتههایی که مقادیر عددی را نشان میدهند.
- حل مشکل مرتب سازی پیش فرض رشتهها که از نظر عددی صحیح نیست.
- آسان سازی مرتب سازی دادههایی که شامل رشتههای عددی هستند.
نتیجه گیری
ویژگی جدید مرتب سازی عددی در دات نت 10، یک بهبود قابل توجه برای توسعه دهندگانی است که با رشتههای عددی کار میکنند. این ویژگی، مرتب سازی صحیح و آسان دادهها را فراهم میکند.