EF代码优先:使用Linq与多对多关系

时间:2012-11-28 17:28:51

标签: asp.net-mvc linq entity-framework-4

我正在使用MVC 4和EF代码第一种方法。我有两个简单的对象。这些是他们的POCO课程:

public class Activity
{
        //Primitive Properties
        [HiddenInput]
        public int Id { get; set; }

        [Required]
        public int LengthInMinutes { get; set; }

        public string AdditionalInfo { get; set; }

        [Required]
        public bool Archive { get; set; }

        //Navigation Properties
        public virtual User User { get; set; }
        public virtual ActivitySet ActivitySet { get; set; }
        public virtual ICollection<Company> Companies { get; set; }
        public virtual ICollection<Description> Descriptions { get; set; }
}

public class Company
{
        //Primitive Properties
        [HiddenInput]
        public int Id { get; set; }

        [Required]
        public string Title { get; set; }

        [Required]
        public bool Archive { get; set; }

        //Navigation Properties
        public virtual ICollection<Activity> Activities { get; set; }
}

现在,我有使用foreach循环迭代的一般活动列表。在循环时,我想为列表中与活动相关的每个公司写一个名称。这是我提出的代码:

@foreach (Activity a in Model)
{
    <p>@a.Companies.Where(d => d.Activities.FirstOrDefault(y => y.Id == a.Id)).Single()</p>
}

不幸的是,当我构建项目时,它给了我编译错误。然后,我如何访问具有多对多关系的元素的详细信息

1 个答案:

答案 0 :(得分:0)

你可以这样试试:

@foreach (Activity a in Model)
{
    <p>@string.Join(",", a.Companies.Select(c => c.Title))</p>
}

它应该列出以逗号分隔的给定活动的所有公司标题。