在使用EF 4.3的LINQ查询中使用"let"kewword

Joh*_*ohn 5 .net c# linq entity-framework let

我有简单的LINQ问题,我无法弄清楚.我有一张桌子Users和一张桌子Employees.一个用户可以拥有0 ... n名员工.

我想做这样的事情:

var result = from u in context.users
             where u.UsrId = 2
             let e = u.Employees.First()
             select new 
{
  UserId = u.UsrId,
  FirstName = e.FirstName
};
Run Code Online (Sandbox Code Playgroud)

这当然不起作用,因为这First()是非法的.First()只能在a结束时出现select.什么也行不通的是在以前的查询中选择员工,如下所示:

var employee = from e. in context.Employees.....
Run Code Online (Sandbox Code Playgroud)

......然后说let e = employee而不是let e = u.Employees().First()

我不确定使用是否正确.我以为是子查询.

First()调用的原因是Employees表不应为每个用户提供多个条目.这是设计中的一个错误,我现在必须处理它.所以我只想要第一个.

Pet*_*iss 4

var result = from u in context.users
let e = u.Employees.FirstOrDefault(x => x.bossId == u.UsrId)
where u.UsrId = 2
select new  {   UserId = u.UsrId,   FirstName = e.FirstName }; 
Run Code Online (Sandbox Code Playgroud)

只是一个提示,未经测试。