![](/img/trans.png)
[英]Filter EF Core Navigation property on GraphQL HotChocolate
[英]Filter navigation property EF core
在我的存儲庫中,我嘗試過濾具有激活變體的產品,但我不知道如何,因為這是第一次。 我應該退回所有有或沒有變體的產品
public async Task<IEnumerable<Articolo>> GetArticoliByDivisioneAsync(string divisione)
{
return await _ctx.Articoli
.Where(a => a.Divisione == divisione
&& a.Category!= "001")
.Include(i => i.Varianti)
.Include(i => i.FotoArticoli)
.ToListAsync();
}
我要過濾的字段在Varianti
。
.Where(v => v.Active == 1)
怎么辦?
只需將您的過濾器添加到where
方法
public async Task<IEnumerable<Articolo>> GetArticoliByDivisioneAsync(string divisione)
{
return await _ctx.Articoli
.Where(a => a.Divisione == divisione
&& a.Category!= "001"
&& a.Varianti.Any(v=>v.Active == 1))
.Include(i => i.Varianti)
.Include(i => i.FotoArticoli)
.ToListAsync();
}
如果您不需要Varianti
的值,您可以刪除包含部分
public async Task<IEnumerable<Articolo>> GetArticoliByDivisioneAsync(string divisione)
{
return await _ctx.Articoli
.Where(a => a.Divisione == divisione
&& a.Category!= "001"
&& a.Varianti.Any(v=>v.Active == 1))
.Include(i => i.FotoArticoli)
.ToListAsync();
}
添加到Where()
子句並使用Any()
:
return await _ctx.Articoli
.Include(i => i.Varianti)
.Include(i => i.FotoArticoli)
.Where(a => a.Divisione == divisione
&& a.Category!= "001"
&& a => a.Varianti.Any(v => v.Active == 1))
.ToListAsync();
要獲得所有具有活動變體的產品,需要對新文章對象進行投影並過濾變體
這是解決方案
public async Task<IEnumerable<Articolo>> GetArticoliByDivisioneAsync(string divisione)
{
return await _ctx.Articoli
.Where(a => a.Divisione == divisione
&& a.Category!= "001")
.Include(i => i.Varianti)
.Include(i => i.FotoArticoli)
.Select(x => new Articolo
{
Codice = x.Codice ,
Prezzo = x.Prezzo ,
Varianti = x.Varianti.Where(v => v.attivo== 0).ToList(),
FotoArticoli = x.FotoArticoli
})
.ToListAsync();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.