Royal Accounting - C# - Проблем със задачата
Моля, някой ако може да погледне кода на тази задача, гърми ми сортирането, и не разбирам защо. Постоянно ми хвърля ексепшън -
Unhandled Exception: System.ArgumentException: At least one object must implement IComparable. at System.Collections.Comparer.Compare(Object a, Object b) at System.Linq.EnumerableSorter`2.CompareKeys(Int32 index1, Int32 index2) at System.Linq.EnumerableSorter`1.QuickSort(Int32[] map, Int32 left, Int32 right) at System.Linq.EnumerableSorter`1.Sort(TElement[] elements, Int32 count) at System.Linq.OrderedEnumerable`1.<GetEnumerator>d__1.MoveNext() at iuni14.Program.Main(String[] args)
Ето го моето решение -
https://github.com/vani4ka66/GUnit/blob/master/Royal%20Accounting%20-
Ами като поставя мишката на последните скоби, където е z, ми изписва точно double. Аз го тълкувам, че сравнявам последните числа в последното дикшънари. Вече тотално се обърках, защото това работеше в предни задачи, а в тази не става. Погледни тогава това:
Dictionary<string, SortedDictionary<string, Dictionary<int, double>>> map = new Dictionary<string, SortedDictionary<string, Dictionary<int, double>>>();
Как да сортирам този речник по последното - по double?
z dействително е double, но ти работиш върху колекция, взимаш много числа тип double.
Как точно искаш да сортираш този речник? Какъв критерий искаш да вземеш?
Да, всъщност, по сумата трябва. Ок, правя го така, но пак гърми -
var sortedMap = map.OrderByDescending(x => x.Value.Values.Select(y => y.Values.Select(z => z).Sum()));
На следващото сортиране програмата пак гърми, понеже му давам
var sortedNames = pair.Value.OrderByDescending(x => x.Value.Select(y => y.Key)).ThenBy(x => x.Value.Select(b => b.Value));
Тук искам да сортира SortedDictionary<string, Dictionary<int, double>> , като първо int да са Descending, после double пак Descending.