我有一个无法解决的简单 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
};
这当然行不通,因为 First()
调用是非法的。 First() 只能出现在 select
的末尾。
同样不起作用的是在之前的查询中选择员工,如下所示:
var employee = from e. in context.Employees.....
...然后说 let e = employee
而不是 let e = u.Employees().First()
我不确定 let 的使用是否正确。我认为它是用于子查询。
First()
调用的原因是 Employees 表中每个用户的条目不应超过一个。那是设计中的错误,我现在必须处理它。所以我只想要第一个。
最佳答案
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 };
只是未经测试的提示。
关于c# - 在 EF 4.3 的 LINQ 查询中使用 "let"关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9480023/