如何解决如何使用子查询在左外连接中转换 lambda
我对子查询中带有 LEFT OUTER JOIN 的 SQL 到 lambda 表达式有疑问。 SQL 返回 147 个值,Lambda 表达式返回 135 个值。他们检索不同数量的记录。所以,我试图找出带有子查询的左外连接的 lambda 表达式,但是没有我想要的 lambda 表达式的结果。 所以,请帮我找出我遗漏的东西。
这是我的 SQL 查询:
select
c.CompanySeq,c.CompanyName,c.CompanyInitial,c.PartnerName,c.Domain,c.CompanyStatus,c.ServiceStartDate,c.RequestStatus,c.ConsultantingRequest,c.IsFixedPrice,c.CMSStatus,ISNULL(E.UnPaidCnt,0) AS UnPaidCnt
from _TErpCustomer as c
LEFT JOIN (
SELECT CompanySeq,COUNT(PaymentStatus) UnPaidCnt
FROM _TBillingInfo
WHERE PaymentStatus = 0
GROUP BY CompanySeq) as E on c.CompanySeq = E.CompanySeq
这是我的 C# lambda 表达式代码。
var test2 = (from c in repository.Customers
join t in
from b in repository.Billings
where b.PaymentStatus == false
group b by new { b.PaymentStatus,b.CompanySeq } into g
select new
{
companyseq = g.Key.CompanySeq,cnt = g.Count()
} on c.CompanySeq equals t.companyseq
where c.CompanyStatus == searchStatus
select new CustomerListModel
{
CompanySeq = c.CompanySeq,CompanyName = c.CompanyName,CompanyInitial = c.CompanyInitial,PartnerName = c.PartnerName,Domain = c.Domain,CompanyStatus = c.CompanyStatus,ServiceStartDate = c.ServiceStartDate,RequestStatus = c.RequestStatus,ConsultantingRequest = (bool)c.ConsultantingRequest,IsFixedPrice = c.IsFixedPrice,CMSStatus = c.CMSStatus,UnPaidCnt = t.cnt
}).OrderByDescending(m => m.ServiceStartDate).ThenBy(m => m.CompanyName).ToList();
请提供任何解决方案或答案。
我已经解决了这个问题。 这是指left outer join in lambda/method syntax in Linq和LINQ query with sub-query on LEFT JOIN conditions
我的解决方案:
model.List = (from c in repository.Customers
join t in
from b in repository.Billings
where b.PaymentStatus == false
group b by new { b.PaymentStatus,b.CompanySeq } into g
select new
{
companyseq = g.Key.CompanySeq,cnt = g.Count()
} on c.CompanySeq equals t.companyseq into x
from t in x.DefaultIfEmpty() // LEFT OUTER JOIN
select new CustomerListModel
{
CompanySeq = c.CompanySeq,UnPaidCnt = t == null ? 0 : t.cnt
}).Where(m => m.CompanyStatus.Equals(searchStatus)).OrderByDescending(m => m.ServiceStartDate).ThenBy(m => m.CompanyName).AsQueryable();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。