Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用linq连接三个表_Linq_Entity Framework_Code First - Fatal编程技术网

使用linq连接三个表

使用linq连接三个表,linq,entity-framework,code-first,Linq,Entity Framework,Code First,我有三张表格: public class Description { public int DescriptionID { get; set; } // Attributes public virtual List<Image> Image { get; set; } } public class Image { public int ImageID { get; set;

我有三张表格:

 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; }

     }
公共类描述
{
public int DescriptionID{get;set;}
//属性
公共虚拟列表映像{get;set;}
}
公众阶级形象
{
公共int-ImageID{get;set;}
//属性
[必需]
public int DescriptionID{get;set;}
[外键(“描述ID”)]
公共虚拟描述{get;set;}
公共虚拟列表ImageSection{get;set;}
}
公开课影像组
{
public int ImageSectionID{get;set;}
//属性
public int?ImageID{get;set;}
[外键(“图像ID”)]
公共虚拟映像映像{get;set;}
}

我有
说明ID
。获取所有具有该描述ID的
ImageSection的linq是什么?

这应该可以做到

var descriptions = new List<Description>();

            var descriptionId = 1;

            var result =
                descriptions.Where(d => d.DescriptionID == descriptionId).SelectMany(
                    im => im.Image.SelectMany(ims=> ims.ImageSection));
var descriptions=新列表();
变量描述ID=1;
var结果=
descriptions.Where(d=>d.DescriptionID==DescriptionID)。选择Many(
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
,而不必担心连接本身

可以尝试以下方法:

var query2 =
    from d in db.Descriptions
    where d.DescriptionID == descriptionID
    from i in d.Image
    from s in i.ImageSection
    select s;
var query2 =
    from d in db.Descriptions
    where d.DescriptionID == descriptionID
    from i in d.Image
    from s in i.ImageSection
    select s;