我对此Linq语句有些困惑。我的基本数据库结构是:
- 事件(id,name,venueid)
- 场地(ID,名称)
- EventTag(EventId,Tagid)
- venuetag(venueid,tagid)
- 标签(tagid,name)
我有一个事件列表,我想通过包含指定标签的事件或将其保留在包含标签的场地进行缩小。
我已经尝试过,我认为我可能不会太远,但是我仍在努力使它工作:
eventsList = eventsList
.SelectMany(x => x.EventTag)
.Where(et => et.TagID == tagID)
.Select(et => t.Event)
.Union(eventsList.SelectMany(x=>x.Venue.VenueTag)
.Where(vt =>vt.TagID == tagID)
.Select(vt=>vt.Venue.Event)
.Distinct()
.ToList();
我非常感谢任何帮助!
安迪
您可以使用Any
:
eventsList.Where(
x => x.EventTag.Any(et => et.TagID == tagID)
|| x.Venue.Any(v => v.Any(vt => vt.TagID == tagID)))
.ToList();