C#Join子句与关联表

时间:2016-10-23 23:12:06

标签: c# linq join

我有3个班级:(人事,Chirurgien和操作)

    public class Personnel
{
    [Key]
    public int CodePersonel { get; set; }
    public FullName NomComplet { get; set; }
    public Adresse Adress { get; set; }
    public int Age { get; set; }

    public ICollection<Operation> Operation { get; set; }

}

Chirurgien

public class Chirurgien : Personnel
{
    public int Nbre_anne_Exp { get; set; }
    public int NoteXP { get; set; }
}

和操作:

    public class Operation
{
    public int OperationId { get; set; }
    public DateTime DateDebut { get; set; }
    public DateTime DateFin { get; set; }
    public int Duree { get; set; }
    public bool Etat { get; set; }

    public string CIN { get; set; }

    public ICollection<Personnel> Personel { get; set; }

    public Patient Patients { get; set; }

    public override string ToString()
    {
        return CIN;
    }
}

我还创建了一个关联表&#34; Membre&#34;

HasMany(p => p.Personel).WithMany(v => v.Operation).Map(m => {
            m.ToTable("Membre");
                m.MapLeftKey("Operation");
                m.MapRightKey("Personel");
            });

如何获得操作失败的Chirurgien列表(Operation Etat = false)??

我使用此代码返回完整的Chirurgien列表:

public ICollection<Chirurgien> NoobDoctors()
    {
        var req = from t in ut.getRepository<Chirurgien>().GetAll()

                  select t;


        return req.ToList();
    }

谢谢

1 个答案:

答案 0 :(得分:0)

  

如何获得操作失败的Chirurgien列表(Operation Etat = false)??

您可以使用Operation导航属性与Any进行过滤:

var result = from c in ut.getRepository<Chirurgien>().GetAll()
             where c.Operation.Any(o => !o.Etat)
             select c;

由于您已与隐式联结表配置many-to-many关系,因此EF将为您维护表(包括查询联接)。