Linq 用整数列表连接对象列表

Tun*_*Tun 2 c# linq asp.net lambda asp.net-mvc-3

我有一个场景如下:

    Event:

public int EventId { get; set; }
public string EventName { get; set;}


MediaGallery:

public int MediaGalleryID { get; set; }
public string Name { get; set; }
public List<int> EventId { get; set;}


List<Event> eventList = query.Event.ToList();    
List<MediaGallery> mediaGallreis = query.MediaGallery.ToList();
Run Code Online (Sandbox Code Playgroud)

我需要检索 MediaGallery 的 eventID 列表中存在 eventId 的 eventList。谁能给我建议?

Jar*_*Par 5

尝试以下

var list = eventList
  .Where(e => mediaGalleries.Any(mg => mg.EventId.Any(id => id == e.EventId)));
Run Code Online (Sandbox Code Playgroud)

如果mediaGalleriesMediaGallery::EventId列表足够大,您可能需要考虑替代方法。创建一组可能的值并直接查询该集合

var idSet = new HashSet(mediaGelleries.SelectMany(x => x.EventId));
var list = eventList.Where(e => idSet.Contains(e.EventId));
Run Code Online (Sandbox Code Playgroud)