select a.* from Atleta a
inner join AtletiGare ag on ag.AtletaId=a.AtletaId
where ag.Pettorale=10
public class Atleta
{
[Required]
[Key]
public int AtletaId { get; set; }
public ICollection<AtletiGare> AtletiGare { get; set; }
}
public class AtletiGare
{
[Required]
[Key]
public int AtletiGareId { get; set; }
[Required]
public int AtletaId { get; set; }
public Atleta Atleta { get; set; }
public int Pettorale { get; set; }
}
IList<Atleta> atletaList = new List<Atleta>();
我需要用atletigare.pettorale==10
过滤的所有atleta,但是
我会尝试将collection(_context.Atleta.Include(x => x.AtletiGare))
包含在atleta中,而不过滤掉atletiGare所在的集合
答案 0 :(得分:0)
您可以尝试以下方法:
atletaList = (from a in db.Atleta
join ag in db.AtletiGare on ag.AtletaId equals a.AtletaId
where ag.Pettorale == 10
select new a()
{
AtletaId = a.AtletaId,
AtletiGare = a.AtletiGare
}).ToList();
关于您的评论,这是您想要做的另一种方式:
atletaList = (from a in db.Atleta
select new a()
{
AtletaId = a.AtletaId,
AtletiGare = a.AtletiGare.Where(y=> y.Pettorale == 10).ToList()
}).ToList();
注意::请注意,执行所需操作的最佳方法是使用联接或使用Includes
进行显式加载,就像您自己做的那样。其他可行的方式(例如,我发布的第二个答案)将对数据库进行多次往返,这对性能不利。