如何在不使用join-on-equals-into子句的情况下在C#LINQ中对对象执行左外连接?有没有办法用where条款做到这一点?正确的问题:对于内连接很容易,我有这样的解决方案
List<JoinPair> innerFinal = (from l in lefts from r in rights where l.Key == r.Key
select new JoinPair { LeftId = l.Id, RightId = r.Id})
Run Code Online (Sandbox Code Playgroud)
但对于左外连接我需要一个解决方案.我是这样的,但它不起作用
List< JoinPair> leftFinal = (from l in lefts from r in rights
select new JoinPair {
LeftId = l.Id,
RightId = ((l.Key==r.Key) ? r.Id : 0
})
Run Code Online (Sandbox Code Playgroud)
JoinPair是一个类:
public class JoinPair { long leftId; long rightId; }
Run Code Online (Sandbox Code Playgroud) 我需要返回所有事件的列表以及用户可能拥有的任何事件的rsvps.但是,无论我传递的用户名是什么,它都会返回每个rsvp.我的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);
Run Code Online (Sandbox Code Playgroud)
关系是
Events.EventID = RSVPs.EventID