Использование агрегата MAX в запросе Entity Framework/LINQ ⇐ C#
Использование агрегата MAX в запросе Entity Framework/LINQ
У меня есть проект, в котором мне нужно использовать Entity Framework Core 7 для базы данных MSSQL, но я застрял в использовании агрегата MAX в SQL как части оператора LINQ.
Учитывайте следующие данные:
Создать таблицу #Member ( MemberID intident(1,1) первичный ключ, Имя VarChar(20) ) Создать таблицу #QuestLog ( Первичный ключ QuestID intident(1,1), MemberID целое число, Квест ВарЧар(20), GoldCollected Int, МонстрыDispatched Int ) Это данные для этих таблиц:
Вставить #Member(FirstName) Values('Wealda') Вставить значения #Member(FirstName)('Tunbin') Вставить значения #Member(FirstName)('Ealhart') Вставить значения #Member(FirstName)('Rancent') Вставьте значения #QuestLog(MemberID, Quest, GoldCollected, MonstersDispatched) (1, «1000 дверей», 100, 6) Вставьте значения #QuestLog(MemberID, Quest, GoldCollected, MonstersDispatched) (1, «1000 дверей», 50, 100) Вставьте значения #QuestLog(MemberID, Quest, GoldCollected, MonstersDispatched) (1, «1000 дверей», 75, 2) Вставьте #QuestLog(MemberID, Quest, GoldCollected, MonstersDispatched) Values(1, 'Rats!', 555, 1500) Вставьте значения #QuestLog(MemberID, Quest, GoldCollected, MonstersDispatched) (1, «Убить доктора Лаки», 50, 0) Вставьте значения #QuestLog(MemberID, Quest, GoldCollected, MonstersDispatched) (1, «Убить доктора Лаки», 1000, 1) Вот SQL-запрос, который возвращает мне нужные данные.
Выберите M.FirstName, Q.Quest, Max(Q.GoldCollected) MaxGold От #Member M Внутреннее присоединение #QuestLog Q На M.MemberID = Q.MemberID Группа по M.FirstName, Q.Quest Что дает мне этот набор данных:
Имя Квест MaxGold Вельда 1000 дверей 100 Вельда Убить доктора Лаки 1000 Вельда Крысы! 555
Это то, что у меня есть в запросе LINQ.
var query = from m в dbContext.Member присоединиться к q в dbContext.Quest на m.MemberID равно q.MemberID сгруппировать new { m, q} по new { m.FirstName, q.Quest } в g выберите новый { FirstName = m.FirstName, Quest = q.Quest, MaxGold = ??? }; Здесь я застрял. Как мне преобразовать совокупное значение Max в запрос LINQ и получить соответствующие результаты?
У меня есть проект, в котором мне нужно использовать Entity Framework Core 7 для базы данных MSSQL, но я застрял в использовании агрегата MAX в SQL как части оператора LINQ.
Учитывайте следующие данные:
Создать таблицу #Member ( MemberID intident(1,1) первичный ключ, Имя VarChar(20) ) Создать таблицу #QuestLog ( Первичный ключ QuestID intident(1,1), MemberID целое число, Квест ВарЧар(20), GoldCollected Int, МонстрыDispatched Int ) Это данные для этих таблиц:
Вставить #Member(FirstName) Values('Wealda') Вставить значения #Member(FirstName)('Tunbin') Вставить значения #Member(FirstName)('Ealhart') Вставить значения #Member(FirstName)('Rancent') Вставьте значения #QuestLog(MemberID, Quest, GoldCollected, MonstersDispatched) (1, «1000 дверей», 100, 6) Вставьте значения #QuestLog(MemberID, Quest, GoldCollected, MonstersDispatched) (1, «1000 дверей», 50, 100) Вставьте значения #QuestLog(MemberID, Quest, GoldCollected, MonstersDispatched) (1, «1000 дверей», 75, 2) Вставьте #QuestLog(MemberID, Quest, GoldCollected, MonstersDispatched) Values(1, 'Rats!', 555, 1500) Вставьте значения #QuestLog(MemberID, Quest, GoldCollected, MonstersDispatched) (1, «Убить доктора Лаки», 50, 0) Вставьте значения #QuestLog(MemberID, Quest, GoldCollected, MonstersDispatched) (1, «Убить доктора Лаки», 1000, 1) Вот SQL-запрос, который возвращает мне нужные данные.
Выберите M.FirstName, Q.Quest, Max(Q.GoldCollected) MaxGold От #Member M Внутреннее присоединение #QuestLog Q На M.MemberID = Q.MemberID Группа по M.FirstName, Q.Quest Что дает мне этот набор данных:
Имя Квест MaxGold Вельда 1000 дверей 100 Вельда Убить доктора Лаки 1000 Вельда Крысы! 555
Это то, что у меня есть в запросе LINQ.
var query = from m в dbContext.Member присоединиться к q в dbContext.Quest на m.MemberID равно q.MemberID сгруппировать new { m, q} по new { m.FirstName, q.Quest } в g выберите новый { FirstName = m.FirstName, Quest = q.Quest, MaxGold = ??? }; Здесь я застрял. Как мне преобразовать совокупное значение Max в запрос LINQ и получить соответствующие результаты?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
«Выражение LINQ не может быть переведено» с сравнением DateTime в запросе LINQ?
Anonymous » » в форуме C# - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как использовать приведение к varchar(max) с STRING_AGG, используя Entity Framework Core
Anonymous » » в форуме C# - 0 Ответы
- 53 Просмотры
-
Последнее сообщение Anonymous
-