[英]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.