asp.net-mvc - 在实体框架核心方面需要帮助
问题描述
在 asp.net core mvc 中使用下面的 EF Core 查询时,我在获取确切数据时遇到问题,当客户表中没有特定帐户的记录时,当我将 count() 与 left 一起使用时,我得到 1 而不是 0加入以下 EF 查询。
有人可以帮助解决这个问题。
var AccountData = from acclist in _dbcontext.Accout
join departmentlist in _dbcontext.Departments on acclist.DepartmentId equals departmentlist.DepartmentId
join statuslist in _dbcontext.Statuses on acclist.StatusId equals statuslist.StatusId
join customerlist in _dbcontext.Customers on acclist.CustomerId equals customerlist.CustomerId into leftjoin
from custlist in leftjoin.DefaultIfEmpty()
where acclist.CaseStatusId == 2
group custlist by new { acclist.CaseID, acclist.AccName, acclist.AccNumber, acclist.CaseName, departmentlist.DepartmentName, statuslist.StatusName } into g
select new
{
_accId = g.Key.AccountID,
_accName = g.Key.AccountName,
_accNumber = g.Key.AccNumber,
_status = g.Key.StatusName,
_department = g.Key.DepartmentName,
_caseName = g.Key.CaseName,
_dataSize = g.Sum(customerlist => customerlist.DataSize),
_customerCount = g.Count()
};
实际的 T-SQL 查询是
select Account.CaseID, Account.AccNumber,Account.AccountName,
Account.CaseName, Departments.DepartmentName,Statuses.StatusName,
Sum(Customer.DataSize), Count(CustomerID)
from Account
inner join Departments on Account.DepartmentId = Departments.DepartmentId
inner join Statuses on Account.StatusId = statuses.StatusId
left join Customer on Account.CustomerId = Customer.CustomerId
where Account.StatusId = 2
group by Account.CaseID,Account.AccNumber,Account.AccountName,Account.CaseName,
Departments.DepartmentName,Statuses.StatusName
解决方案
推荐阅读
- javascript - javascript中立即调用的函数表达式
- git - 如何返回提交修复/补丁,但之后不更改任何内容?
- swift - 动画 CALayer [filters, compositionFilter, backFilters]
- python - Python tkinter 线程和窗口刷新
- ios - 如何在 Podfile 而不是 podspec 中设置“exclude_files”
- javascript - @firebase/testing - 如何使用 auth.providerId 调用`initializeTestApp`?
- android - android 权限已添加到谷歌商店,但它不在 APK 中
- java - Java 中这种复合赋值的求值顺序是什么?
- r - RStudio - template_dfa 中的错误:尝试运行文档时找不到对象'_htmltools_template_dfa'
- javascript - 在翻译的游戏世界中获取鼠标位置:processing.js