我有一个dotnet core 2.0
后端和angular2+
前端应用程序。
我想获取一个时间表列表中event
字段等于“基线”(来自HTML的下拉菜单)的参与者列表。我在one-to-many
和Participant
类之间建立了Schedule
关系。
Participant.cs
类:
public class Participant
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Gender { get; set; }
public DateTime DateOfBirth { get; set; }
// RelationShips
public ICollection<Schedule> Schedules { get; set; }
public Participant()
{
Schedules = new Collection<Schedule>();
}
}
还有我的Schedule.cs
类:
public class Schedule
{
public int Id { get; set; }
public DateTime? AppointmentDate { get; set; }
public string AppointmentTime { get; set; }
public string Event { get; set; }
public string Location { get; set; }
// RelationShip
public Participant Participant { get; set; }
public int ParticipantId { get; set; }
}
我有一个angular 2+
前端,可用于获取事件等于“基线”的参与者及其时间表的列表。基线来自前端。基本上是一个硬编码的下拉菜单项。
我能够获得具有以下所有事件的所有日程表:
return await context.Participants
.Include(x => x.Schedules)
.ToListAsync();
但这又给了我所有时间表的人。我需要所有时间表都为event
等于“基准”的人。
这是我到目前为止的想法:
return await context. Participants
.Include(x => x.Schedules.Where(v => v.Event == "baseline"))
.ToListAsync();
但是,这没有给我任何帮助。 怎样才能做到这一点?我不记得我在哪里读书,但有人说实体框架尚不支持此功能。我不确定这是真的。 任何帮助,将不胜感激。
编辑: 这是我遇到的错误堆栈:
InvalidOperationException:包含属性lambda表达式'x => {来自x.Schedules中的Schedule v,其中[v] .Event.ToLower()。Equals(__ ToLower_0)select [v]}'是无效的。该表达式应表示属性访问:“ t => t.MyProperty”。要定位在派生类型上声明的导航,请指定目标类型的显式键入的lambda参数,例如'(派生d)=> d.MyProperty'。有关包括相关数据的更多信息,请参见http://go.microsoft.com/fwlink/?LinkID=74639
答案 0 :(得分:0)
如果您需要获取参与者列表,则可以从schedules
开始并获得Participant
这样的引用:
return context.Schedules.Where(s => s.Event == "baseline")
.Include(x => x.Participant).Select(x => x.Participant)