[Introduction to EF] - Problem {5} - Departments with more than 5 Employees
Здравейте,
блъсках си главата 1 час, защото накрая не ми излизаха резултатите в реда, в който трябва да бъдат за Judge.
Погледнах авторското решение, като то е доста по семпло направено и не достатъчно оптимизирано (не че моето е кой знае колко по-добре), но това в случея няма значение. Това което има значение е, защо има разлика в подредбата на Employees в Код номер 1 (моят) и Код номер 2?
Не мога да разбера какво се случва, но за пример при Код номер 1, резултатите започват по следният начин:
Engineering Terri
Roberto Tamburello Engineering Manager
Gail Erickson Design Engineer
Jossef Goldberg Design Engineer
Terri Duffy Vice President of Engineering
Michael Sullivan Senior Design Engineer
Sharon Salavaria Design Engineer
Докато при Код номер 2 започват по следният начин:
Engineering Terri
Terri Duffy Vice President of Engineering
Roberto Tamburello Engineering Manager
Gail Erickson Design Engineer
Jossef Goldberg Design Engineer
Michael Sullivan Senior Design Engineer
Sharon Salavaria Design Engineer
Моите подозрения са, че нещо се обърква при създаването на анонимти типове, но явно не знам достатъчно добре детайлите за анонимните типове и не разбирам какво се случва.
Надявам се някой да може да обясни, какво се случва и от къде идва разликата!
Благодаря!
Код номер 1:
var deparments = softUniContext.Departments
.Where(d => d.Employees.Count > 5)
.OrderBy(d => d.Employees.Count)
.Select(d => new
{
d.Name,
managerFirstName = d.Manager.FirstName,
employees = d.Employees
.Select(e => new
{
e.FirstName,
e.LastName,
e.JobTitle
})
})
.ToList();
foreach (var depart in deparments)
{
Console.WriteLine($"{depart.Name} {depart.managerFirstName}");
foreach (var emp in depart.employees)
{
Console.WriteLine($"{emp.FirstName} {emp.LastName} {emp.JobTitle}");
}
}
Код номер 2:
var departTest = softUniContext.Departments
.Where(d => d.Employees.Count > 5)
.OrderBy(d => d.Employees.Count);
foreach (var depart in departTest)
{
Console.WriteLine($"{depart.Name} {depart.Manager.FirstName}");
foreach (var emp in depart.Employees)
{
Console.WriteLine($"{emp.FirstName} {emp.LastName} {emp.JobTitle}");
}
}
Ето го Query-то, което се рънва. Но няма GroupBy, има OrderBy накрая ама не съм сигурен, какво точно подрежда.
Това е вероятно твоето куери, пусни и другото.
Не, това не е моето. Моето си стои закоментирано.
Вярно, не погледнах че тя връща само департамент ид,мениджър и име.. Я виж тогава следващите заявки, които ще направи foreach-a, там вече трябва да ти взима хората от департаментите.