简体   繁体   English

Linq语句具有两个select和where条件

[英]Linq statement with two select's and where condition

I have this linq to SQL where I just want to return one Disease with the connecting drug. 我在SQL上有此linq,我只想用连接药物返回一种疾病。 But what this is doing is returning all Diseases and only populating the drug that meets the where condition. 但是,这样做是在使所有疾病都退回并且仅填充符合where条件的药物。

Do I need to select the drugs and then the Disease for this to work? 我需要先选择药物然后再选择疾病才能起作用吗?

    public List<Model.Disease> GetDiseaseById(Guid DiseaseId)
    {
       var Disease = (from Diseases in db.Diseases
                        join dr in db.DrugDiseases on  equals d.DrugId on dr.DrugId 
                        join rdDiseases on rdDiseases.Diseases equals rd.DiseaseId on dr.DiseaseId
                      where (aDrug.DiseaseId == DiseaseId)
                      select new Model.Disease 
                    {
                       DiseaseId = rdDiseases.DiseaseId,
                       DiseaseName = rdDiseases.DiseaseName,
                       drug = (from d in db.Drug
                                join dr1 in db.DrugDiseases on  equals d.DrugId on dr1.DrugId 
                                join rd1Diseases on rdDiseases.Diseases equals rd.DiseaseId on dr1.DiseaseId
                               where (Diseases.DiseaseId == d.DiseaseId && d.DiseaseId == DiseaseId)
                               select new drug
                            {
                              DrugId = d.drug,
                              DrugName = d.drugName}).OrderBy(m => m.DrugName).ToList(),
                   }).OrderBy(d => d.DiseaseName).ToList().FirstOrDefault();
       return Disease;                       
     }

Based on the comments above, you just need one join and this should be straightforward. 根据上面的评论,您只需要一个联接,这应该很简单。 You should read about Joins in LINQ and LINQ in general. 您应该大致了解LINQ和LINQ中的Joins Also, since you are looking for just one disease, why are you returning a list? 另外,由于您只在寻找一种疾病,所以为什么要返回清单? The code below should work: 下面的代码应该工作:

public Model.Disease GetDiseaseById(Guid DiseaseId)
{
   return (from Disease in db.Diseases
               where Disease.DiseaseId == DiseaseId
               orderby Disease.DiseaseName
               join d in db.Drug on Disease.DiseaseId equals d.DiseasesId
               select new Model.Disease
               {
                   DiseaseId = Disease.DiseaseId
                   DiseaseName = Disease.DiseaseName
                   drug = new { DrugId = d.DrugId, DrugName = d.DrugName }
               }).FirstOrDefault();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM