[英]EF Core Query Many to Many with filtering
我有以下表結構:
我想檢索提供的reportId 的所有資金。 我是這樣做的:
var result = _context.FundsInReports
.Join(_context.Funds,
a=> a.FundId,
b => b.Id,
(fir, fund) => new {fir, fund})
.Join(_context.Reports,
a=> a.fir.ReportId,
b=> b.Id,
(fir2, report) => new { fir2, report})
.Where(q=> q.fir2.fir.ReportId==reportId)
.Select(res => new FundsResponse()
{
FundId = res.fir2.fund.Id,
LegalName = res.fir2.fund.LegalName,
HeaderName = res.fir2.fund.HeaderName,
PortfolioCurrency = res.fir2.fund.PortfolioCurrencyId,
BaseCurrency = res.fir2.fund.BaseCurrencyId,
FileName = res.fir2.fund.FileName,
Locked = res.fir2.fund.Locked
}).ToList();
這工作正常......但是,我想使用以下代碼:
var result = _context.Funds
.Include(a => a.FundsInReports)
.ThenInclude(a => a.Report) // Many to many , intellisense is not working here !
.Select(res => new FundsResponse()
{
FundId = res.Id,
LegalName = res.LegalName,
HeaderName = res.HeaderName,
PortfolioCurrency = res.PortfolioCurrencyId,
BaseCurrency = res.BaseCurrencyId,
FileName = res.FileName,
Locked = res.Locked
}).ToList();
但我不知道如何在此代碼中添加過濾(在哪里)。 謝謝...
您不將 Include 與自定義投影一起使用。 它們是產生結果的替代方法。 所以就跑
var result = _context.FundsInReport
.Where( fr => fr.ReportId == someId )
.Select(fr => new FundsResponse()
{
FundId = fr.Fund.Id,
LegalName = fr.Fund.LegalName,
HeaderName = fr.Fund.HeaderName,
PortfolioCurrency = fr.Fund.PortfolioCurrencyId,
BaseCurrency = fr.Fund.BaseCurrencyId,
FileName = fr.Fund.FileName,
Locked = fr.Fund.Locked
}).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.