什么是最好的linq查询

时间:2010-10-07 01:32:42

标签: linq collections

我有一组Calendar对象。日历的属性为 Id

IEnumerable<Calendar> CalendarsToView;

我有另一个事件对象集合。事件对象具有 CalendarId

的属性
IEnumerable<CalendarEvent> Events;

我想过滤事件集合,只返回 calendarId 在CalendarsToView集合中的事件。

这样做的最佳方式是什么?

2 个答案:

答案 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));