如何解决如何使用Linq根据用户属于另一个表的位置查询表
我有一个简单的问题困扰着我,我想了解如何使用 linq 查询数据子集,例如我有一个包含证书的表,证书属于一家公司,一家公司拥有属于它的用户,并且该视图基本上应该只显示当前用户链接到的公司的证书。这就是我目前所拥有的,并且正在与存在语句或子查询的正确语法作斗争?
public List<CertificateListItemModel> GetUserCertificates()
{
var certificates = (from p in _db.Certificates
**where(
from bu2 in _db.BusinessUsers
where p.BusinessId == bu2.BusinessId && bu2.Email == _user.Name
//select new {}
)**
select new CertificateListItemModel
{
...
})
.Distinct().ToList();
return certificates;
}
解决方法
这应该会返回一个不同的证书列表,这些证书属于分配给 _user 的公司(假设 _user.Name 和 businessUser.Email 确实具有相同的内容,如果它们是相同的用户)。
HOOK_EXPR
,
我设法用一种更简单的方法解决了我的问题,而且似乎并没有那么难。上述解决方案让我感到困惑,我未能实施。请在下面找到更简单的解决方案。我只需要添加带有布尔条件的 Where
var applications = (_db.Certificates
.Join(_db.BillingItems,p => p.CertificateId,bi => bi.CertificateId,(p,bi) => new {p,bi})
.Where(@t => (_db.BusinessUsers.Any(c => c.CbrBusinessId == @t.p.CbrOwnerRef && c.Email == _user.Name)))
.Select(@t => new CertificateListItemModel
{
CertificateId = @t.p.CertificateId,ApplicationRefNo = @t.p.ApplicationReferenceNo,ApplicationStatus = @t.p.ApplicationStatus,SubmittedDateTime = @t.p.SubmittedDateTime,IssuingLocation = @t.p.DesiredIssueLocation,BillingId = @t.bi.BillingId,PaperNo = @t.bi.PaperNo,InvoiceNo = @t.bi.InvoiceNo,BillingStatus = @t.bi.BillingStatus,InvoiceRefNo = @t.bi.PaperNo,BillingParty = @t.bi.BillingParty
}))
.Distinct().ToList();
return applications;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。