[英]Joining three tables using linq
我有三個表:
public class Description
{
public int DescriptionID { get; set; }
// Attributes
public virtual List<Image> Image { get; set; }
}
public class Image
{
public int ImageID { get; set; }
// Attributes
[Required]
public int DescriptionID { get; set; }
[ForeignKey("DescriptionID")]
public virtual Description Description { get; set; }
public virtual List<ImageSection> ImageSection { get; set; }
}
public class ImageSection
{
public int ImageSectionID { get; set; }
// Attributes
public int? ImageID { get; set; }
[ForeignKey("ImageID")]
public virtual Image Image { get; set; }
}
我有DescriptionID
。 獲取具有該DescriptionID的所有ImageSection
的linq是什么?
var result = dbContext.Images.Include(i => i.ImageSections)
.Where(j => j.DescriptionID == 1)
.SelectMany(im => im.ImageSections).ToList();
我希望這個能幫上忙
這應該可以解決問題
var descriptions = new List<Description>();
var descriptionId = 1;
var result =
descriptions.Where(d => d.DescriptionID == descriptionId).SelectMany(
im => im.Image.SelectMany(ims=> ims.ImageSection));
給出問題的說明,您似乎不需要連接三個表。 由於已經有了要加入的DescriptionID
,因此可以忽略Description
表。
嘗試這個:
var query1 =
from i in db.Images
where i.DescriptionID == descriptionID
join s in db.ImageSections on i.ImageID equals s.ImageID
select s;
但是,由於表定義已包含SelectMany
您可以執行基本的SelectMany
而不必擔心聯接本身。
嘗試以下方法:
var query2 =
from d in db.Descriptions
where d.DescriptionID == descriptionID
from i in d.Image
from s in i.ImageSection
select s;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.