我试图查询产生会议的列表,其中所有参加的人都没有现有的业务。我的查询部分工作。如果会议中没有人有业务,那就完美了。如果我连接一个品种(一个人与一个企业和一个没有参加会议的企业的人),它会中断我可以问我可以对我的查询进行哪些编辑,以便将其考虑在内所有与会者。
Interaction.Cs
public virtual ICollection<InteractionAttendee> Attendees { get; set; }
Attendee.Cs
public virtual Interaction Interaction { get; set; }
public virtual Person Person { get; set; }
我的查询
from z in ctx.Meetings
where z.Attendees.Any(y => !ctx.Businsses.Any(x => x.Owner_Id == y.Person.Id)
select new {Id = z.Id}
答案 0 :(得分:1)
不要使用Any,请尝试使用All
from z in ctx.Meetings
where z.Attendees.All(y => !ctx.Businsses.Any(x => x.Owner_Id == y.Person.Id)
select new {Id = z.Id}
使用All,您指定所有参加者必须满足条件。
答案 1 :(得分:0)
不确定你是否在寻找这个......
您正在使用2个互斥的套装(有业务的人和没有业务的人参加会议)
int possibillity = 1; //1=> all has business
//2=> none has business
//3=> some may have business
var meetings =
ctx.Meetings.where(m=> (possibillity==1 && m.Attendees.All(a=> ctx.Businsses.Any(x => x.Owner_Id == a.Person.Id)))
|| (possibillity==2 && m.Attendees.All(a=> !ctx.Businsses.Any(x => x.Owner_Id == a.Person.Id)))
|| (possibillity==3 && 1==1));