实体框架查询一对多

时间:2016-01-26 09:57:19

标签: c# entity-framework linq

我有两张桌子:

enter image description here

在实体框架模型中,关系一对多。 我想选择所有具有开头配置的教练,例如24.1.2016 9:00以及配置开始于24.1.2016 10:00。 我不知道如何在一个LINQ方法或LINQ查询中执行此操作。 我有这个代码。

List<instructor> result = new List<instructor>();
        DateTime date = new DateTime(2016,1,24,9,0,0);
        var dispositions = Db.disposition.AsQueryable();
        var instructorsTen = Db.instructor.AsQueryable();
        var instructorsNine = Db.instructor.AsQueryable();            

        instructorsNine = from i in instructorsNine from d in i.disposition where d.begin == date select d.instructor;
        date= date.AddHours(1);
        instructorsTen = from i in instructorsTen from d in i.dispozice where d.begin == date select d.instructor;

        foreach (instructor insNine in instructorsNine) {
            foreach (instructor insTen in instructorsTen) {
                if (insNine.ID == insTen.ID) result.Add(insNine);
            }
        }

1 个答案:

答案 0 :(得分:2)

  

我想选择所有具有开头配置功能的教练,例如24.1.2016 9:00,以及配置开始于24.1.2016 10:00。

您可以使用导航属性Any这样的

var date1 = new DateTime(2016,1,24,9,0,0);
var date2 = date1.AddHours(1);
var result = Db.instructor
    .Where(i => i.disposition.Any(d => d.begin == date1)
        && i.disposition.Any(d => d.begin == date2));