Перевести SQL Groupby + Sum в C # лямбда-выражение - PullRequest
0 голосов
/ 27 июня 2018

Я работаю над проектом ASP.NET core w / EF о пожертвованиях, я бы создал группу списков пожертвований по основателям и упорядочил по общей сумме.

Просто запросить 2 таблицы [DonationTransaction] и [Aspnetusers] по SQL:

SELECT CONCAT(u.FirstName, " ", u.LastName) as Fullname, 'BuddyIcon.jpg' as Image, SUM(t.amount)
FROM donation_transaction t
LEFT JOIN aspnetusers u 
ON u.Id = t.user_id

GROUP BY t.user_id Заказать по сумме (в сумме) DESC

Однако, используя шаблон репо с EF, я должен выполнять запрос по лямбда-выражению.

IEnumerable < DonationTransaction > tranlist = _donationTransactionService.GetDonationTransactions();
IEnumerable < Aspnetusers > userlist = _userService.GetUsers();
IEnumerable < DonationRanking > founderlist = tranlist.Join(userlist,
  t => t.UserId,
  u => u.Id,
  (t, u) => new {
   UserID = u.Id, FullName = u.FirstName + " " + u.LastName, Image = "BuddyIcon.jpg", Amount = t.Amount
  })
 .GroupBy(grp => grp.UserID)
 .Select(group => new DonationRanking {
  Name = group.First().FullName,
   Image = group.First().Image,
   TotalAmount = group.Sum(ta => ta.Amount)
 })
 .OrderByDescending(dr => dr.TotalAmount);

У меня есть вопрос:

  1. У меня есть предварительный просмотр результата запроса, результат кажется правильным, однако я не понимаю, почему брать член группы методом First () (например, group.First (). FullName), основано на MSDN документ Метод First () - возвращает первый элемент в последовательности, который удовлетворяет указанному условию. Так значит ли это получить первый ряд только из [grp]? Как улучшить лямбда-выражение выше?

  2. В Visual Studio 2017 он способен визуализировать SQL, сгенерированный LINQ в режиме отладки, однако он не может проверить, используя лямбда-выражение, еще одна интересная вещь, которую я обнаружил, это то, что я включаю профилировщик SQL в MySQL. , SQL, сгенерированный по лямбда-выражению, не будет записываться в журнал. Итак, как я могу просмотреть SQL как использовать LINQ2SQL?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...