【发布时间】:2020-05-27 05:57:34
【问题描述】:
我在 LINQ 中编写了这个左连接,我只从 SHPerson 表中选择了 PersonId,但在 SQL Server 分析器中,我也从 SHPFA 表中获得了 PersonId。
var spfQuery = from n in shHPFARepository.GetAll()
.AsNoTracking()
.Where(t => t.ShareCount > 0)
group n by new { n.PersonId } into nGroup
select new
{
nGroup.Key.PersonId,
TotalhareCount = nGroup.Sum(t => t.ShareCount)
};
var query = (from sp in SHPersonRepository.GetAll().AsNoTracking()
join spf in spfQuery on sp.Id equals spf.PersonId
select new SHPOutputDto
{
PersonId = sp.PersonId,
ShareCount = spf.TotalShareCount,
IsShareHolder=true
});
var resultDto = await query.ToListAsync();
我不希望在查询中选择 SHPFA.PersonId ([t0].[PersonId])。
SELECT [t0].[PersonId], [t0].[TotalShareCount], [e].[PersonId]
FROM [SHolders].[SHPerson] AS [e]
INNER JOIN
(SELECT [t].[SHPersonId], SUM([t].[ShareCount]) AS [TotalShareCount]
FROM [SHolders].[SHPFA] AS [t]
WHERE [t].[ShareCount] > 0
GROUP BY [t].[PersonId]) AS [t0] ON [e].[Id] = [t0].[PersonId]
【问题讨论】:
标签: c# linq linq-to-sql left-join sql-server-profiler