0

次の 3 つのテーブルがあります。

 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ます。ImageSectionその DescriptionID を持つすべての を取得するための linq は何でしょうか?

4

3 に答える 3

1
var result = dbContext.Images.Include(i => i.ImageSections)
                 .Where(j => j.DescriptionID == 1)
                 .SelectMany(im => im.ImageSections).ToList(); 

これが役立つことを願っています

于 2012-07-14T09:17:52.783 に答える
0

問題の説明を考えると、3 つのテーブルを結合する必要はないようです。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;
于 2012-07-15T05:04:25.783 に答える
0

これでうまくいくはずです

var descriptions = new List<Description>();

            var descriptionId = 1;

            var result =
                descriptions.Where(d => d.DescriptionID == descriptionId).SelectMany(
                    im => im.Image.SelectMany(ims=> ims.ImageSection));
于 2012-07-14T09:14:46.047 に答える