0

How to fix this query to meet the new .NET Core 3 update?

   var rtn =
            from fav in _context.AdvertFavorite
            join advert in _context.Adverts on fav.AdvertID equals advert.AdvertID
            join blob in _context.Blobs on advert.AdvertID equals blob.AdvertID
            join user in _userManager.Users on advert.UserID equals user.Id
            where fav.UserID == usrid
            group new { blob, user, advert } by new { advert.AdvertID } into grp
            select grp;

        var rtn1 = rtn.ToList();

        return rtn1;
  • Seems like a duplicate of [this question](https://stackoverflow.com/questions/58138556/client-side-groupby-is-not-supported) – Xerillio Nov 04 '20 at 18:08
  • Not really. However, I have updated the code snippet. I'd like someone to say how I can rewrite it in LINQ query, the other one is not LINQ – PeterKapenaPeter Nov 04 '20 at 18:35
  • That is LINQ, query syntax vs fluent though – gilliduck Nov 04 '20 at 19:27
  • @PeterKapenaPeter can you explain how it's different? Is the exception you're getting not coming from Entity Framework? As gilliduck says, both are LINQ it's just different syntax. – Xerillio Nov 04 '20 at 20:47
  • If your previous version was LINQ fluent/lambda syntax, you were probably better off, as EF Core won't do server side grouping, you need to flatten and do client side grouping by putting in an `AsEnumerable` just before calling `GroupBy`. PS EF Core doesn't do it because SQL doesn't have a group concept either. – NetMage Nov 05 '20 at 01:19
  • I managed to just rewrite my code because even client side group was not grouping at all, [link](https://stackoverflow.com/questions/58138556/client-side-groupby-is-not-supported). – PeterKapenaPeter Nov 05 '20 at 06:19
  • ` var list = new List(); var rtn =(from fav in _context.AdvertFavorite join advert in _context.Adverts on fav.AdvertID equals advert.AdvertID join user in _userManager.Users on advert.UserID equals user.Id where fav.UserID == usrid select new { user, advert }).ToList(); rtn.ForEach((r) => { var blob = _context.Blobs.Where(b => b.AdvertID == r.advert.AdvertID).FirstOrDefault(); list.Add(new { blob, r.user, r.advert, }); }); return list;` – PeterKapenaPeter Nov 05 '20 at 06:19

0 Answers0