2010-01-29 98 views
2
List<HelprClass.Organizer> org = 
    (from EventOrg in cntx.EventOrganizer 
    from MstrOrg in cntx.Organizer 
    where EventOrg.OrganizerID == MstrOrg.OrganizerID 
    Select new HelprClass.Organizer 
    { 
    OrganizerName = MstrOrg.OrganizerName 
    }).ToList() 

这项工作很好,现在我想在上述查询中使用IN Opeartor。IN运营商在哪里条款

在EventOrganizer

我有事件ID现在我只需要选择事件ID在EventOrganizer收集

exsist我有事件ID的另一个变种varibale

Var EventID= From EvntID in Evetn Select new {ID= EvntID.EventID}; 

像这样的事情

其中

EventOrg.OrganizerID == MstrOrg.OrganizerID 

    && EventOrg.EventID in EventID.ID 

我该如何实现这一目标?

我会感谢您的帮助

回答

0

如果您正在使用实体框架,你不能使用包含语句,这将是在LINQ的一个简单的解决方案。因此,如果它只是Linq 2实体,请使用where子句,如“Where EventId.Contains(EventOrg.Id)”

如果确实使用实体框架,则必须根据EventID中的Id构建或表达式采集。

1

试试这个:

var EventIDs = from EvntID in Event select EvntID.EventID; 

var org = (from EventOrg in cntx.EventOrganizer 
      from MstrOrg in cntx.Organizer 
      where EventOrg.OrganizerID == MstrOrg.OrganizerID 
      select new {E=EventOrg, M=MstrOrg} 
     ).ToList(); 


org = org 
     .Where(o => EventIDs.Contains(o.E.EventID)) 
     .Select(o => new HelprClass.Organizer 
      { 
       OrganizerName = o.M.OrganizerName 
      } 
     );