Loading...
YavorSpassov+deleted! avatar YavorSpassov+deleted! 133 Точки

Задача - Book Library

За задачата Book Library ми трябва сумиране на крайния резултат. Това е кодът ми за момента.
Нагледно, резултатът, който получавам с примерния вход е:


Tolkien -> 30.00
Tolkien -> 10.25
JKRowling -> 15.50
JKRowling -> 20.00
OBowden -> 14.00

Това, което ми трябва, е сумиране по име на автор:

Tolkien -> 40.25
JKRowling -> 35.50
OBowden -> 14.00

 

 

Тагове:
0
Programming Fundamentals 15/10/2016 19:12:12
Kiril98 avatar Kiril98 66 Точки
Best Answer

Успях да го направя използвайки anonymous тип.

var filteredBooks = myLibrary.books.
                Select(b => new
                {
                    Author = b.author,
                    EarningsTotal = myLibrary.books
                        .Where(b1 => b1.author.Equals(b.author))
                        .Sum(b1 => b1.price)
                })
                .Distinct()
                .OrderByDescending(b => b.EarningsTotal)
                .ThenBy(b => b.Author)
                .ToList();
            foreach (var book in filteredBooks)
            {
                Console.WriteLine("{0:f2} -> {1:f2}", book.Author, book.EarningsTotal);
            }

 

2
Kiril98 avatar Kiril98 66 Точки

Да аз го направих с твоят код и го пуснах в джъдж преди тук и дава 100/100 :). Select заявките са много мощно оръжие, ако се научиш как да ги ползваш.

0
12/09/2016 16:40:53
YordanDringov avatar YordanDringov 26 Точки

http://pastebin.com/HyneRH0p - Това е моят код по задачата, като ми остава само да ги сортирам по price и authors. Не знам къде точно да поставя OrderByDescending() и ThenBy(). Ще се радвам за малко съдействие.

0
alabama415 avatar alabama415 101 Точки

Кирил можеш ли да обясниш какво прави тази заявка и най-вече частта

                Select(b => new
                {
                    Author = b.author,
                    EarningsTotal = myLibrary.books
                        .Where(b1 => b1.author.Equals(b.author))
                        .Sum(b1 => b1.price)
                })

 

това което аз разбирам е: селктва автора, след това, ако автор е равен на автор събирай цените, но този конструктор new за първи път го виждам в този тип заявки. Ако може и малко разяснение, за да не копираме само кода :)<br> <br> Благодаря!

0
17/10/2016 14:39:56
Kiril98 avatar Kiril98 66 Точки

Еми общо взето инициализираш нов вид обект, който съдържа в себе си само две property-та (Author, EarningsTotal). Това прави new.

0
AtillaOmer avatar AtillaOmer 13 Точки

Ето го LINQ мастер-а! Браво !

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