Sort custom C # lists

I have a program that finds all .csv report files in a directory. These reports are stored in a list.

List<string> _items = new List<string>();

these reports are called like this:

"month year.csv" (example: "August 2010.csv")

I would like to sort my reports by month.

Months are in the following order:

januar, februar, marec, april, may, junij, julij, avgust, september, october, november, december

How can i do this?

Br, Wolfy

+3
source share
2 answers

The most compact complete solution would be something like:

CultureInfo sloveneCultureInfo = new CultureInfo("sl-SI");
_items = _items.OrderBy(fn => DateTime.ParseExact("01 " + fn, @"dd MMMM yyyy\.\c\s\v", sloveneCultureInfo)).ToList();

. , , :

CultureInfo sloveneCultureInfo = new CultureInfo("sl-SI");
_items.Sort((x, y) => DateTime.ParseExact("01 " + x, @"dd MMMM yyyy\.\c\s\v",sloveneCultureInfo).CompareTo(DateTime.ParseExact("01 " + y, @"dd MMMM yyyy\.\c\s\v", sloveneCultureInfo)));

( , , CurrentCulture, sloveneCultureInfo ).

-, , , , , .

: , .

( IEnumerable IQueryable).

OrderBy , , IOrderedEnumerable<T> ( IOrderedQueryable<T>). , IQueryable, ). , IEnumerable<T>, , , ThenBy , , , .

, :

var x = _items.OrderBy(SomeMethod);

SomeMethod , , x IOrderedEnumerable<T>. , SomeMethod , .

_items, . , Tolist() .

, , Sort(). , ( ), , IComparer<T> ( , , ), , ( , ).

, , , , .

Sort() . , , .

, . -, .

, , .

, Avgust 2010 , , BCL ( ).

, "01", . , - , "01 " + fn, fn - .

, . "01 Avgust 2010.csv". , , , MMMM dd ( ) yyyy . \.\c\s\v, , ".csv", , . , DateTime.ParseExact("01 " + fn, @"dd MMMM yyyy\.\c\s\v", new Culture("sl-SI")), fn - . -, fn => DateTime.ParseExact("01 " + fn, @"dd MMMM yyyy\.\c\s\v", new Culture("sl-SI")).

, _items.OrderBy(fn => DateTime.ParseExact("01 " + fn, @"dd MMMM yyyy\.\c\s\v", new Culture("sl-SI"))) OrderBy, , DateTime.

. , CompareTo() DateTime, ParseExact.

, CultureInfo, sloveneCultureInfo, .

+3

, DateTime. , , .

, :

_items = _items.OrderBy(FilenameToDate).ToList();
+4

Source: https://habr.com/ru/post/1767835/


All Articles