【发布时间】:2018-12-27 02:34:32
【问题描述】:
SELECT
e.EmpName,
me.RemarkNumber,
me.RemarkPeopleNumber
FROM
EmployeeInfo e
LEFT JOIN (
SELECT
COUNT(RemarkId) As RemarkNumber,
COUNT(DISTINCT MemberId) As RemarkPeopleNumber,
CreateUser
FROM
MemberRemark
WHERE
RemarkStatus = 0
GROUP BY
CreateUser
) AS me On e.EmpName = me.CreateUser
WHERE
BranchCode = '0000'
And [Status] = 0
如何将其转换为 LINQ?
from e in db.EmployeeInfo
join me in (
from memberRemarks in db.MemberRemark
where memberRemarks.RemarkStatus == 0
group memberRemarks by new
{
memberRemarks.CreateUser,
} into g
select new
{
RemarkNumber = g.Count(),
RemarkPeopleNumber = g.Select(m => m.MemberId).Distinct().Count(),
g.Key.CreateUser
}
) on new { e.EmpName } equals new { EmpName = me.CreateUser } into meJoin
from me in meJoin.DefaultIfEmpty()
where e.BranchCode == "0000" & &e.Status == 0
select new
{
e.EmpName,
me.RemarkNumber,
me.RemarkPeopleNumber
};
我收到了这个错误
RemarkPeopleNumber = g.Select(m=>m.MemberId).Distinct().Count(), //错误
使用asp.net core mvc 2.1 + ef core 2.1 + mssql
【问题讨论】:
-
MySQL 查询对于 LINQ 来说可能太多了,而是尝试将其放入存储过程中并返回所需的内容,如下所示sunali.com/2012/10/10/…
-
我知道mysql使用Pomelo驱动可以使用.DistinctBy(x => x.MemberId).Count()。但是是mssql
-
@boateng 看在上帝的份上,请不要建议存储过程。
-
好的,视图也可以。
标签: c# linq asp.net-core-2.1 ef-core-2.1