我有一组Calendar对象。日历的属性为 Id 。
IEnumerable<Calendar> CalendarsToView;
我有另一个事件对象集合。事件对象具有 CalendarId
的属性IEnumerable<CalendarEvent> Events;
我想过滤事件集合,只返回 calendarId 在CalendarsToView集合中的事件。
这样做的最佳方式是什么?
答案 0 :(得分:1)
进行加入
var eventsIwant = from e in Events
from c in CalendarsToView
where c.calendarId = e.CalendarId
select e
答案 1 :(得分:1)
这需要一个内在的,等同于:
var eventsInCalendar = from e in Events
join c in CalendarsToView on e.CalendarId equals c.Id
select e;
var distinctEventsInCalendar = eventsInCalendar.Distinct();
以下是使用哈希集的另一种方法:
var calendarIds = new HashSet<int>(CalendarsToView.Select(c => c.Id));
var distinctEventsInCalendar = Events.Where(e => calendarIds.Contains(e.CalendarId));