簡體   English   中英

使用linq連接三個表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM