C # 4.0 - 3 пары значений (возможно, больше). Сортировка на основе значений - PullRequest
0 голосов
/ 23 февраля 2011

Это сложная фраза для поискового запроса, и мне не повезло. И чем больше я об этом думаю, тем больше логический вопрос, чем синтаксический. Однако я новичок в C # (8 лет, php), и в настоящее время я создаю свое третье приложение для оконных форм, так что может существовать метод, созданный для того, что я хочу.

То, что я делаю, - это чтение формата даты, заданного пользователем в виде одной строки, и разбиение его на части, которые будут назначены массиву, или из того, что я видел в моих поисках ассоциативных массивов, возможно, SortedList или Dictionary .

, например

SortedList<string, int> resultArray = new SortedList<string, int>();
string dateFormat = "yyyyMMdd" // Just and example

int yearPos = dateFormat.IndexOf("yyyy");
int monthPos = dateFormat.IndexOf("MM");
int dayPos = dateFormat.IndexOf("dd");

resultArray.Add("yearPos", yearPos);
resultArray.Add("monthPos", monthPos);
resultArray.Add("dayPos", dayPos);

// So, resultArray expressed as an array looks like:
// resultArray["yearPos"] = 0
// resultArray["monthPos"] = 4
// resultArray["dayPos"] = 6

// Sort List and reassign keys (or values) based on their position value (which is unique)
// ???????

return resultArray;

В идеале, конечный результат, который мне нужен для этой коллекции / массива, состоит в том, чтобы члены ранжировались по значению их позиции в строке. Как это:

// resultArray["yearPos"] = 1
// resultArray["monthPos"] = 2
// resultArray["dayPos"] = 3

Причина, по которой я пытаюсь это сделать, заключается в том, что один и тот же формат даты используется для извлечения реальной даты из файла с использованием Regex.Match. И я хочу использовать эти новые значения, чтобы знать, какой элемент группы совпадения использовать для каждой части даты.

Любая помощь, которая поможет мне разобраться в этом, будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 23 февраля 2011

Я попробовал это, и это работает:

DateTime dt;
if (DateTime.TryParseExact("20110223", "yyyyMMdd", null, 0, out dt))
    Console.WriteLine(dt);
1 голос
/ 23 февраля 2011

Просто используйте DateTime.TryParse.Вы можете передать ей строку форматирования, и она сделает всю работу за вас.

...