Оператор IN в предложении where

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 в приведенном выше запросе.

в EventOrganizer у меня есть EventID теперь я хочу выбрать только Event ID, существующий в коллекции EventOrganizer

У меня есть EventID другой var varibale

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

Что-то вроде этого

где

    EventOrg.OrganizerID == MstrOrg.OrganizerID

    &&  EventOrg.EventID in EventID.ID

Как я могу достичь этого?

Буду признателен за вашу помощь

2 ответа

Попробуй это:

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
           }
         );  

Если вы используете Entity Framework, вы не можете использовать оператор Contains, который будет простым решением в Linq. SO, если это просто сущности Linq 2, используйте предложение where, например "where EventId.Contains(EventOrg.Id)"

Если вы действительно используете Entity Framework, вам нужно будет создать выражение или на основе идентификаторов в коллекции EventID.

Другие вопросы по тегам