[英]Subquery in LINQ that's in the select statement, not the where clause
[英]Linq statement with two select's and where condition
我在SQL上有此linq,我只想用連接葯物返回一種疾病。 但是,這樣做是在使所有疾病都退回並且僅填充符合where條件的葯物。
我需要先選擇葯物然后再選擇疾病才能起作用嗎?
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;
}
根據上面的評論,您只需要一個聯接,這應該很簡單。 您應該大致了解LINQ和LINQ中的Joins 。 另外,由於您只在尋找一種疾病,所以為什么要返回清單? 下面的代碼應該工作:
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.