2010-10-07 26 views
0

我有一個日曆對象的集合。日曆有一個屬性Id什麼是這個最好的linq查詢

IEnumerable<Calendar> CalendarsToView; 

我有另一個事件對象的集合。事件對象有CalendarId

IEnumerable<CalendarEvent> Events; 

我要過濾的活動集合只返回比賽時,calendarId是CalendarsToView集合中的一個屬性。

這樣做的最好方法是什麼?

回答

1

做一個加入

var eventsIwant = from e in Events 
        from c in CalendarsToView 
        where c.calendarId = e.CalendarId 
        select e 
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));