У меня есть два запроса, берущие данные из одной таблицы с лямбда-выражением, и я хотел бы использовать что-то вроде метода SQL «join on» для объединения таблиц с одним идентификатором.Запросы:
var tbl_emails_received =
db.EmailAddresses
.GroupBy(x => new { x.RecepientID })
.Select(x => new
{
x.Key.RecepientID,
EmailsRecieved = x.Count()
});
и
var tbl_emails_sent =
db.EmailAddresses
.GroupBy(x => new { x.SenderID })
.Select(x => new
{
x.Key.SenderID,
EmailsSent = x.Count()
});
Я пытаюсь повторить, что делает этот MsSQL Query.Я попытался просмотреть документацию Microsoft для join
(, ссылка здесь ), но для хранения объектов требуются новые классы.
WITH
tbl_emails_received AS
(
SELECT RecepientID, count(FileID) AS EmailsRecieved
FROM tbl_ex_EmailAddresses
GROUP BY RecepientID
),
tbl_emails_sent AS
(
SELECT SenderId, count(FileID) AS EmailsSent
FROM tbl_ex_EmailAddresses
GROUP BY SenderID
)
SELECT s.SenderID as Id, r.EmailsRecieved, s.EmailsSent,
r.EmailsRecieved + s.EmailsSent as TotalEmails,
slist.EmailAddress, slist.EmailName, slist.DomainName
FROM tbl_emails_received r
JOIN tbl_emails_sent s
ON r.RecepientID = s.SenderID
Но может быть, что LINQ или C # не могут создавать объектына лету, как с SQL делает с данными.У меня вопрос, есть ли способ, которым я могу повторить, что SQL-запрос делает в LINQ или простой C #?Есть ли лучшие практики для такого рода запросов?Есть ли другой пакет, который я мог бы использовать, который потенциально мог бы сделать это проще?