0
我在查詢2個表,Club
和LinkClubUser
。我想要從LinkclubUser的最後一個日期檢索用戶分配的最後一個分會。如何在實體框架核心中創建組子句
我有正確的SQL查詢:
select top 1
max(A.DataInscricao),
A.Nome, A.NomeNaCamisola, A.NumNaCamisola, A.Posicao, A.Situacao
from
Clube as A
inner join
LinkClubeUser as B on a.Id = b.IdClube
where
b.IdUser ='9faea9f3-28d7-4e34-8572-3102726d3c75'
group by
A.Nome, A.NomeNaCamisola, A.NumNaCamisola, A.Posicao, A.Situacao
我得到了正確的行。
我嘗試此查詢到實體框架的核心這樣的轉變,但我回去超過1行:
var query = _dbContext
.LinkClubeUser
.Join(_dbContext.Clube,
lnk => lnk.IdClube,
clube => clube.Id,
(Lnk, clube) => new { Lnk, clube })
.Where(t => t.Lnk.IdUser == "9faea9f3-28d7-4e34-8572-3102726d3c75")
.GroupBy(t => new
{
t.clube.Id,
t.clube.Nome,
t.clube.NomeNaCamisola,
t.clube.NumNaCamisola,
t.clube.Posicao,
t.clube.Situacao,
t.clube.DataInscricao
}, t => t.clube)
.Select(g => new
{
Nome = g.Key.Nome,
NomeNaCamisola = g.Key.NomeNaCamisola,
NumNaCamisola = g.Key.NumNaCamisola,
Posicao = g.Key.Posicao,
Situacao = g.Key.Situacao,
DataInscricao = (DateTime)g.Max(p => p.DataInscricao)
}).Take(1);
但是這個代碼是由實體框架的核心是這樣
SELECT
[lnk].[Id], [lnk].[Date], [lnk].[IdClub],
[lnk].[IdQuestionario], [lnk].[IdUser], [clube].[Id],
[clube].[ClubActual], [clube].[Date], [clube].[Nome],
[clube].[NomeNaCamisola], [clube].[NumNaCamisola], [clube].[Posicao],
[clube].[Situacao]
FROM
[LinkClubeUser] AS [lnk]
INNER JOIN
[Clube] AS [clube] ON [lnk].[IdClube] = [clube].[Id]
WHERE
[lnk].[IdUser] = N'9faea9f3-28d7-4e34-8572-3102726d3c75'
ORDER BY
[clube].[Id], [clube].[Nome], [clube].[NomeNaCamisola],
[clube].[NumNaCamisola], [clube].[Posicao], [clube].[Situacao],
[clube].[DataInscricao]
轉換
我沒有看到group by子句。
我的實體框架核心查詢有什麼問題?
你好瑞安,如果我嘗試刪除groupby中的一些clube字段,我會在下面的選擇中放棄那些匿名字段。例如,如果我刪除了t.clube.Nome,我就放棄了Nome = g.Key.Nome, – jolynice
您好jolynice,您想要在哪個字段上進行分組?我會更新我的答案取決於他們 – Ryan
您好瑞安,感謝您的幫助,其實我只需要這個字段 t.clube.Nome, t.clube.NomeNaCamisola, t.clube.NumNaCamisola, t.clube。 Posicao, t.clube.Situacao ,, – jolynice