Оператор 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.