2010-01-29 3 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() 

Ce travail bien maintenant je veux utiliser IN Opeartor dans la requête ci-dessus.IN opérateur dans où clause

dans le EventOrganizer je EventID maintenant je veux sélectionner uniquement ID d'événement exsist dans la collection EventOrganizer

Je EventID une autre var varibale

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

Quelque chose comme ça

EventOrg.OrganizerID == MstrOrg.OrganizerID 

    && EventOrg.EventID in EventID.ID 

Comment puis-je réaliser cela?

Je vous saurais gré de votre aide

Répondre

0

Si vous utilisez Entity Framework vous ne pouvez pas utiliser une déclaration contient, ce qui serait une solution facile à Linq. SO si c'est juste Linq 2 Entités, utilisez une clause where comme "où EventId.Contains (EventOrg.Id)"

Si vous utilisez effectivement Entity Framework, vous devrez construire une expression ou basée sur les Id dans l'EventID Collection.

1

Essayez ceci:

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