使用Virtual Icollection属性筛选Linq查询
本文关键字:Linq 查询 筛选 属性 Virtual Icollection 使用 | 更新日期: 2023-09-27 17:59:04
我正试图查询一个列表,该列表生成的会议中,所有与会者都没有现有业务。我的查询部分有效。如果会议上没有人有业务,那就完美了。如果我连接各种各样的人(参加会议的有企业的人和没有企业的人),它就会断开。我可以问我可以对我的ling查询进行哪些编辑,以便将所有与会者都考虑在内吗。
交互.Cs
public virtual ICollection<InteractionAttendee> Attendees { get; set; }
与会者.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}
不要使用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}
通过"全部",您指定所有与会者必须完全满足条件。
不确定您是否在寻找这个。。。。
您使用的是两个相互排斥的集合(一个有业务的人和一个没有业务的人参加会议)
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));