Loading...
bomman avatar bomman 43 Точки

Homework: Streams and Files, Problem 7. Directory Traversal

Здравейте колеги

Поровех се из нета и намерех една статия за групиране на файловете, но не можах да стигана до алгоритъма, който ще ми групира файловете, както е указано в задачата. Това е моето решение, ако някой може да ми помогне, ще съм му благодарен! 

http://pastebin.com/PtZARV6x

1
Fundamentals Module
Filkolev avatar Filkolev 4482 Точки

Идеята е да направиш речник, който да пази като ключове разширенията. Оттам нататък има разни сортирания, които се правят с LINQ.

0
bomman avatar bomman 43 Точки

Мерси, а има ли вариант да се реши по този начин?

0
Filkolev avatar Filkolev 4482 Точки

Може да, IOrderedEnumerable<IGrouping<K,V>> по същество е сортиран речник. В момента няма да мога да пусна кода да разгледам, но почти съм сигурен, че може да се довърши по твоя начин.

1
alex.mitev avatar alex.mitev 20 Точки

Аз също срещам проблеми със задачата. 

Записал съм всичко в :

var  fileCollection = new Dictionary<string, Dictionary<string, double>>();

Пълни се коректно.

След това правя следното групиране, като видях, че други хора са го направили същото и работи, при мен се чупи:

  var sortedFiles = fileCollection.OrderByDescending(x => x.Value.Keys.Count).ThenBy(k => k.Value.Values);

идеята ми след това беше да сортирам още веднъж по име на ключовете : ThenBy(y => y.Key);

Но дори без него не работи.

Направих един метод да принтира речника, за да видя  

http://pastebin.com/M809yv79

 

0
bomman avatar bomman 43 Точки

Здравей

Ето го моето решение на проблема http://pastebin.com/QmmxbTR2

Ползвам съм в единия метод:

var orderedExtension = extensions.OrderByDescending(=> p.Value.Count).ThenBy(ext => ext.Key);

което при мен проработи до колкото си спомням. 

Дано да ти е от полза.

1
alex.mitev avatar alex.mitev 20 Точки

Мерси за отговора, Моето незнайно защо не проработи, а когато копирах на колега сортировката, ама да кажем идентична с моята, но различни имена на променливи = работеше. Цялата работа е, че не мога да разбера защо този ред хвърля ексепшън.

var sortedFiles = fileCollection.OrderByDescending(x => x.Value.Keys.Count).ThenBy(k => k.Value.Values);

Накрая стигнах до работещо решение, но с чужда помощ - не бих могъл сам:

var sortedFiles = fileCollection.Select(p => new { p.Key, Value = p.Value.OrderByDescending(m => m.Value) }).OrderByDescending(p => p.Value.Count()).ThenBy(p => p.Key).ToDictionary(p => p.Key, p => p.Value);

това работи коректно по условие, подрежда по брой, по големина на файловете, и накрая по име, ако броя е еднакъв.

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