如何使用EF在c#中使用lambda表达式进行左连接?

如何使用EF在c#中使用lambda表达式进行左连接?,c#,entity-framework,linq,C#,Entity Framework,Linq,我想用lambda表达式做左连接。但我不知道该怎么做。我尝试了很多LINQ查询,但没有得到正确的查询。我是实体框架的新手。所以任何知道我怎么做的人,请告诉我 在下面我尝试了这个查询: var query = UsersContext.Users.OrderBy(a => a.Email).Skip(skip).Take(pageSize).ToList(); var result = (from u in db.Notification join c in qu

我想用lambda表达式做左连接。但我不知道该怎么做。我尝试了很多LINQ查询,但没有得到正确的查询。我是实体框架的新手。所以任何知道我怎么做的人,请告诉我

在下面我尝试了这个查询:

var query = UsersContext.Users.OrderBy(a => a.Email).Skip(skip).Take(pageSize).ToList();
var result = (from u in db.Notification
              join c in query on u.id equals c.Id into j1
              from j2 in j1.DefaultIfEmpty()
              select new { u, j2 }).OrderByDescending(a => a.u.datetime).Take(3).ToList();

这是我的问题。我想让它加入通知表,只获取最后3个通知。

EF是一个ORM。LINQ是ORM之上的查询语言,而不是SQL的替代品。您应该在实体上定义导航属性和关系,而不是像表一样尝试连接它们。你的
用户
类应该有一个
通知
集合属性,你可以用它来检索通知。你能给我一个提示吗,对于实体框架来说,bcs是新的。它们是
UsersContext
db
不同的
DbContext
s?您不能加入查询,因为您使用
ToList
实现了查询。您无法将数据库表与内存中的列表联接。是的,这是不同的DbContext,我使用的是成员身份登录,因此UsersContext用于获取用户数据
var query = UsersContext.Users.Blah().Blah().ToList();
 // It's a non-complete List of Users....  (all we care about)

 var ids = query.Select(u=>u.Id).ToArray();
 // get an array of needed Users.

var notes = (from u in db.Notification
              where ids.Contains(u.id)
              select u).ToList(); 

var results = from u in notes
          join c in query on u.id equals c.Id into j1
          from j2 in j1.DefaultIfEmpty()
          select new { u, j2 }).OrderByDescending(a => a.u.datetime).Take(3).ToList();