2014-01-20 85 views
1

中的標籤縮小事件的列表對象我對這個Linq聲明有點難住。我的基本的數據庫結構是:Linq - 通過

  • 事件(ID,姓名,VenueID)
  • 地點(ID,姓名)
  • EventTag(事件ID,標籤識別)
  • VenueTag(VenueID,標籤識別)
  • Tag(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(); 

我會任何幫助非常感謝!

安迪

回答

3

您可以使用Any此:

eventsList.Where(
       x => x.EventTag.Any(et => et.TagID == tagID) 
        || x.Venue.Any(v => v.Any(vt => vt.TagID == tagID))) 
      .ToList(); 
+0

非常感謝。仍然只是選擇一些像「Any」這樣的東西。 –