Entity Framework Introduction, 13. Find Employees by First Name Starting With Sa
Здравейте колеги.
Може ли някой да ми каже, защо на тази привидно най-лесна задача ми гърми последният тест?
1) Failed : Test_002.ValidateOutput : Returned value is incorrect! Expected string length 0 but was 104. Strings differ at index 0.
Ето това ми е кода. Даже специално направих ако няма такива хора да връща празен стринг и пак. Някой да знае къде е проблема или да я има решена да видя?
public static string GetEmployeesByFirstNameStartingWithSa(SoftUniContext context)
// 13. Find Employees by First Name Starting with "Sa"
{
var sb = new StringBuilder();var employees = context.Employees
.Select(e => new
{
e.FirstName,
e.LastName,
e.JobTitle,
e.Salary
}).Where(e => e.FirstName.StartsWith("Sa"))
.OrderBy(e => e.FirstName).ThenBy(e => e.LastName)
.ToList();if (employees.Count == 0)
{
return "";
}foreach (var e in employees)
{
sb.AppendLine($"{e.FirstName} {e.LastName} - {e.JobTitle} - (${e.Salary:F2})");
}
return sb.ToString().TrimEnd();
}
Ето и линк към задачата в judge - https://judge.softuni.bg/Contests/351/Entity-Framework-Introduction
Мерси предварително на всички!
Здравей.
Мерси!
Само да питам, това решение дали ще можеш да го качиш пак в judge и да видиш дали сега ще ти даде 100 от 100?
Защото след като изкопирах кода ти и го качах, пак ми дава същата грешка
Има ли вариант нещо да са променили тестовете и да не са коректни в момента?
Изпратам ти и линк към целия ми проект в гит
https://github.com/stefism/Projects/tree/master/C%23%20Entity%20Framework%20Core%20June%202020/08%20EXERCISE%20ENTITY%20FRAMEWORK%20INTRODUCTION/SoftUni/SoftUni
Ако погледнеш в StartUp файла, най-горе е метода с твоя код. Определено не разбирам какво се случва?
Здравей отново.
Отоносно "добре е ако можеш да филтрираш в самото начало да го правиш", Понеже ми стана интересно, специално проверих заявките със SQL Server Profiler и както и предполагах, при следните два кода
1.
var employees = context.Employees
.Where(e => e.Salary > 50000)
.Select(e => new
{
e.FirstName,
e.Salary
})
.OrderBy(e => e.FirstName).ToList();
2.
var employees = context.Employees
.Select(e => new
{
e.FirstName,
e.Salary
}).Where(e => e.Salary > 50000)
.OrderBy(e => e.FirstName).ToList();
Заявката, която се генерира е абсолютно една и съща, а именно:
SELECT [e].[FirstName], [e].[Salary]
FROM [Employees] AS [e]
WHERE [e].[Salary] > 50000.0
ORDER BY [e].[FirstName]
Тоест няма значение Where клаузата дали ще е написана преди или след .Select(). Важното е да е написана преди .ToList() или преди материализацията.
Това са глупости, както е посочил колегата, where няма никакво значение къде си го сложил. Стига да е преди .toList() който е терминиращ и от iquerable списъка ви става ienumerable и буквално се изпълнява заявката, другото е без значение а селекта позвоялва да е по оптимизирана.
Отиваш на канала на Кенов в youtube и гледай малко да се образоваш... Имало значение къде е where... боже и това доживях да прочета.да бъде първи и преди select...
Aми ако имам сложна заявка от 2 таблици с include и ми трябва стойност от врата таблица за where да пак ще го напраскам най-горе хах ок.
Колега, аз ли нещо не преценявам правилно или от поста ти лъха на заяждане и омраза?
Защо с такива думи? Пишем тук за да научим по нещо. Няма лошо човек да не разбира и да се учи.
Давай го малко по-благо и уважително към хората
TeodorStefanovPld Ти отиди в някой друг канал, за да си оправиш правописа и граматиката. Също така, можеш да посетиш и някой друг канал, който да те научи на обноски, въпреки че след като си изпуснал първите 7 години ще е малко трудно.
Наслука
Cry me a river :D
Доживях да ми мрънкат, тъжно че няма какво да кажеш, а спамиш.