Професионална програма
Loading...
pavsavov avatar pavsavov 18 Точки

10.Departments with More Than 5 Employees от DataBase First - EF Core модул

Здравейте,

Имам следния въпрос:

Опитах да я реша със следния израз :

                var departments = context.Departments
                    .Select(d => new
                    {
                        DepName = d.Name,
                        MangName = $" {d.Manager.FirstName} {d.Manager.LastName}",
                        Employees = d.Employees.Select(e => new
                        {
                            FName = e.FirstName,
                            LName = e.LastName,
                            Job = e.JobTitle
                        }).OrderBy(e => e.FName)
                        .ThenBy(e => e.LName)
                    }).OrderBy(e => e.Employees.Count())
                    .ThenBy(e => e.DepName)
                    .TakeWhile(e=> e.Employees.Count() > 5);

Compile-time всичко е ок , но Run-time получавам следния Exception :

" Could not parse expression value....This overload of the method 'System.Linq.Queryable.TakeWhile' is currently not supported. ".

Така както го разбирам в MSDN - https://msdn.microsoft.com/en-us/library/bb548775(v=vs.110).aspx

за да работи TakeWhile - трябва да е върху IEnumerable . Затова реших в предпоследния ред да добавя един ToList().

                    .ThenBy(e => e.DepName)
                    .ToList()
                    .TakeWhile(e=> e.Employees.Count() > 5);

Резулатат е празна конзола / файл (понеже и във файл си записва резултатите).

Въпроса ми е какво би му липсвало за да проработи. И защо всъщност TakeWhile не дава желания резултат?

Благодаря предварително!

0
Module: C# DB
sukalu88 avatar sukalu88 46 Точки

It's great to be here with everyone, I have a lot of knowledge from what you share, to say thank you, the information and knowledge here helps me a lot. paper io 2

0