Как преобразовать запрос SQL в выражение Linq для соединения с различными условиями в EF Core 6?C#

Место общения программистов C#
Ответить
Anonymous
 Как преобразовать запрос SQL в выражение Linq для соединения с различными условиями в EF Core 6?

Сообщение Anonymous »

Это мой SQL-запрос, который я пытаюсь преобразовать:

Код: Выделить всё

SELECT TOP (10)
t1.ProductName, t2.ProductName,
COUNT(DISTINCT t1.OrderId) AS num_orders
FROM
Reports t1
JOIN
Reports t2 ON t1.OrderId = t2.OrderId
AND t1.ProductId < t2.ProductId
GROUP BY
t1.ProductName, t2.ProductName
ORDER BY
num_orders DESC
Как вы можете видеть, во включенном состоянии идентификатор заказа должен быть одинаковым, а идентификатор продукта одного должен быть меньше другого.
Вот чего я достиг на данный момент (очень неполно):

Код: Выделить всё

var reportData = await (from t1 in this.Context.Reports
join t2 in this.Context.Reports
on t1.OrderIdequals t2.OrderId
where t1.ProductId < t2.ProductId
into GroupedData
orderby GroupedData.Key
select new
{
GroupedData
}).ToListAsync();
Я получаю сообщение об ошибке, если помещаю выражение с «и» в «вкл» и пытаюсь сделать это в отдельном «где», но все равно не получается работает.
Кроме того, выбор неполный, потому что мне еще не удалось заставить работать весь приведенный выше код, поэтому не придавайте этому значения.
Ближе всего я подошел к тому, чтобы заставить его работать у меня, я получил ту же ошибку, что и этот человек: Как я могу использовать выражение Linq для соединения с GroupBy в EF Core 3.1
Это страница, которую я использовал для поиска информации, но она не показывает то, что я ищу:
https://learn.microsoft.com/en-us/ef/co ... plex-query -operators
Я также использовал Linqer и этот репозиторий SQL для Linq, но я не могу заставить их работать, я младший :(
Может ли кто-нибудь мне помочь или порекомендовать, где искать информацию?

Подробнее здесь: https://stackoverflow.com/questions/748 ... various-co
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»