简体   繁体   English

LINQ LEFT JOIN where子句不起作用

[英]LINQ LEFT JOIN where clause not working

I need to return a list of all the events and any rsvps a user may have for an event. 我需要返回所有事件的列表以及用户可能拥有的任何事件的rsvps。 However, regardless of the username I pass, It returns every single rsvp. 但是,无论我传递的用户名是什么,它都会返回每个rsvp。 My linq Query -> 我的linq查询 - >

   return (from events in this._context.Context.Events
           join rsvps in (this._context.Context.RSVPs
                          .Where(o=> o.UserName == userName))
           on events equals rsvps.Event into re
           from rsvps in re.DefaultIfEmpty()
           select events);

Relationship is 关系是
Events.EventID = RSVPs.EventID Events.EventID = RSVPs.EventID

from e in _context.Context.Events
join r in _context.Context.RSVPs.Where(o => o.UserName == userName)
    on e.EventID equals r.EventID into g
select new {
    Event = e,
    Rsvps = g
};

Do it this way: 这样做:

return (from events in this._context.Context.Events
        join rsvps in this._context.Context.RSVPs
        on events.EventIDequals equals rsvps.EventID into re
        from c in re.DefaultIfEmpty()
        where c.UserName == userName
        select new {events,rsvps});

If you just want to filter the RSVPs property of your Events in-place, then I guess you probably could do use something like 如果你只想过滤你的事件的RSVPs属性,那么我猜你可能会使用类似的东西

var events = _context.Context.Events;

foreach(var event in events)
{
    // Assuming the property is named RSVPs
    event.RSVPs = event.RSVPs.Where(o => o.UserName.Equals(userName));
}

return events;

I wouldn't consider it that neat though. 我不会认为这很整洁。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM