繁体   English   中英

使用虚拟Icollection属性过滤Linq查询

[英]Filtering Linq Query with Virtual Icollection Property

我正在尝试查询一个清单,该清单产生的会议中所有与会者都没有业务。 我的查询部分有效。 如果会议中没有人与公司打交道,它会完美地工作。 如果我联系各种各样的人(一个有业务的人和没有业务的人参加会议),那会中断。请问我可以对ling查询进行什么编辑,以便将所有与会者都考虑在内。

交互作用

public virtual ICollection<InteractionAttendee> Attendees { get; set; }

参加者

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}

代替使用任何,而是尝试全部

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}

在“全部”中,您指定所有与会者都必须满足条件。

不知道您是否正在寻找...。

您正在使用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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM