【问题标题】:IN Operator in where clausewhere 子句中的 IN 运算符
【发布时间】:2011-01-10 18:35:54
【问题描述】:
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,我只想选择 EventOrganizer 集合中存在的 Event ID

我有另一个 var varibale 的 EventID

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

像这样的

在哪里

    EventOrg.OrganizerID == MstrOrg.OrganizerID

    &&  EventOrg.EventID in EventID.ID

我怎样才能做到这一点?

感谢您的帮助

【问题讨论】:

    标签: c# linq in-clause


    【解决方案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
               }
             );  
    

    【讨论】:

      【解决方案2】:

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

      如果您确实在使用实体框架,则必须根据 EventID 集合中的 Id 构建一个 or 表达式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-18
        相关资源
        最近更新 更多