Loading...

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

RoYaL avatar RoYaL Trainer 6849 Точки
Best Answer

Какво точно е заданието на задачата? Да изпринтираш коментарите на юзър, който идва от конзолата, така ли? Какво на тези коментари? Виждам, че принтираш цял обект, което ме навежда на мисълта, че вероятно на конзолата излиза нещо от сорта на Data.Entity.Comment. Да не би да трябва да излезе нещо на този коментар? Например текст на коментара (c.Body примерно).

Логически ми изглежда вярна задача. Практически ми се струва изпълнена грешно обаче. В обектния модел на приложението имаш две основни единици. Потребители и коментари.

Един коментар може да бъде написан само от един потребител (например този пост, който четеш във форума е написан единствено и само от мен). Докато един потребител може да има множество коментари (например освен този пост, вчера написах още няколко). За да си го представим в смисъла на обекти, вероятно това означава, че класът Коментар има пропърти от тип Потребител. А класът потребител има пропърти от тип Колекция<Потребител>.

Като знаем това, единственото което в момента ни интересува е да намерим желаният потребител от базата данни. В момента, в който го намерим и получим обект от клас Потребител, това което трябва да направим е просто да вземем неговата колекция с коментари.

 

1. Взимане на желаният потребител от базата:

string givenUserName = Console.ReadLine();
User desiredUserFromDB = blogDBContext.Users.FirstOrDefault(user => user.UserName == givenUserName);

Какво казваме тук: Дай ми първият потребител от DbSet-а от потребители, който отговаря на условието UserName пропъртито му да е равно на променливата givenUserName (това, което потребителят е въвел в конзолата)

 

2. Взимане на списъка с коментари на потребителя:

List<Comment> comments = desiredUserFromDB.Comments.ToList();

 

3. Проверяваме дали не е празна колекцията, за да изпринтираме "None"

if(comments.Count == 0)
{
    Console.WriteLine("None");
}

 

4. В противен случай ги обикаляме и изпринтираме нещо за тези коментари (вероятно не целият обект както казахме, тъй като това просто ще изпринтира типа на обекта)

else
{
    foreach (Comment comment in comments)
    {
        Console.WriteLine(comment.Body);
    }
}

 

Този FirstOrDefault прави нещо като твоят първи forech върху потребителите. Само че от там нататък няма смисъл да се обикалят всички коментари в базата и да се вземат тези, които отговарят на този потребител, тъй като потребителят сам по себе си държи в себе си колекцията от коментари, които той е написал. Общо взето това е промяната (иначе и двете резултират до едно и също нещо).

4
22/07/2016 11:45:23
alexander_lazarov avatar alexander_lazarov 8 Точки

Благодаря за изчерпателното обяснение и решение на задачата.

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