Loading...
Bebrevski avatar Bebrevski 17 Точки

Dictionaries, Lambda and LINQ

Здравейте,

Колеги, имам нужда от малко разяснение по въпроса, защото срещам трудности при задачите.

Първи въпрос:

Имам речник ( Dictionary<string, Dictionary<string, double>> ), който след въведени данни има вида (стойностите са примерни):

Pesho   |   Sweets   |   0.50

               |    Butter     |   0.60

                                   Sum(1.10)


Gosho   |   Bread   |   0.70

               |   Beer      |   0.90

                                  Sum(1.60)

Как да го сортирам по низходящ ред на сумата от стойностите и самите стойности да са сортирани по низходящ ред, както да показано:

Gosho   |   Beer     |   0.90

               |   Bread   |   0.70

                                  Sum(1.60)


Pesho   |   Butter       |   0.60

               |    Sweets   |   0.50

                                   Sum(1.10)

 

Втори въпрос:

Каква аджеба структура от данни се ползва тук ????

var products = productsList
.OrderByDescending(p => p.Value)
.Take(3)

.Select(p => new KeyValuePair<string, double>(p.Key, p.Value * 0.9));

 

Ще оценя вашата помощ !!

Тагове:
0
Programming Fundamentals
VasilValchanov avatar VasilValchanov 555 Точки

На първия въпрос ->

foreach (var d in dict.OrderByDescending(a => a.Value.Sum(v => v.Value)))
            {
                Console.WriteLine($"{d.Key}");
                foreach (var v in d.Value)
                {
                    Console.WriteLine($"{v.Value}");
                }
            }

На втория въпрос ->

p.Value в случая ти е System.Collections.Generic.Dictionary<string, double> и не може това да го умножиш с 0.9

0
Bebrevski avatar Bebrevski 17 Точки

Вече не знам, кое какво може да прави и затова питам

И все пак нищо не ми се получи. За по-лесно качвам целия код на задачата.

Та има един коментар, под който нямам идея каква структура от данни се използва зад VAR.

А сортирането и принтирането най-долу пак не става. Ако кажеш, че кода не струва, трия и почвам на нова, но просто тая сортировка ми е последната част

https://pastebin.com/UqWHFmkM

Ето и условие (Зад. 4)

https://softuni.bg/trainings/resources/officedocument/16685/exercise-problem-descriptions-programming-fundamentals-extended-may-2017

0
22/08/2017 22:34:11
spzvtbg avatar spzvtbg 581 Точки

KeyValuePair<string, double> || Tuple<string, double> => are read Only!!!

за да направиш намалението можеш просто => .Select(x => x.Value * 0.9)

освен това като променяш речник е хубаво да проверяваш дали има такъв ключ или стоиност 

след ползване на селект която и да е колекция става на IEnumerable<string, <string, double>> - това е общо казано като универсална колекция, като посочиш с мишката върху var ти показва какво е в момента - примерно за вложен речник,

ако искаш само да го фориичнеш и принтираш е ок но ако ще работиш още с него го превръщаш отново в нужната колекция с 

.ТoDictionary(x => x.Key, x => x.Value.ToDictionary(y => y.Key, y => y.Value))

0
22/08/2017 23:02:51
spzvtbg avatar spzvtbg 581 Точки

P.S. - ето тук можеш да разгледаш мои решения ако ти е интересно

0
Bebrevski avatar Bebrevski 17 Точки

Определено ще поразмишлявам над думите ти :)

Нов ми е материала и неща като (   .ТoDictionary(x => x.Key, x => x.Value.ToDictionary(y => y.Key, y => y.Value))   ), ме гръмват отвсякъде.

Мисля да почна задачата нанова, за да осмисля по-добре нещата.

Благодаря за помощта !

0
Bebrevski avatar Bebrevski 17 Точки

Много внимателно ще поразмишлявам над думите ти :)

Нов ми е материала и неща, като ( .ТoDictionary(x => x.Key, x => x.Value.ToDictionary(y => y.Key, y => y.Value))  ), направо ме гръмват отвсякъде.

Трия всичко и почвам отначало, за да мога да осмисля както се случва.

Благодаря !

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.