【发布时间】:2015-08-23 20:14:19
【问题描述】:
我正在使用以下 Lambda 表达式尝试加入两个模型 (LyncUser) 和 (DDI),并且只返回两个模型中都存在的 DDI 编号。在 LyncUser 中,该字段称为 LyncUser.DDI,在 DDI 中称为 DDI.Number。
这有效并返回从 LyncUsers 控制器使用的所有 DDI 号码的列表。
var lyncDB = new LyncUserEntities();
return Json(lyncDB.lyncUsers
.Select(c => new { DDI = c.DDI }), JsonRequestBehavior.AllowGet);
当我将其更改为合并连接时,仅返回存在于 LyncUsers 中但不存在于 DDI 中的 DDI 号码,它无法恢复任何内容。
public JsonResult GetAvailableDDINumbers()
{
var lyncDB = new LyncUserEntities();
return Json(lyncDB.LyncUsers
.Join(lyncDB.DDIs, avail => avail.DDI, used => used.Number,
(used, avail) => new { used = used, avail = avail })
.Where(joined => joined.used.DDI == joined.avail.Number), JsonRequestBehavior.AllowGet);
}
【问题讨论】:
-
如果你把代码拆开一点(不要马上返回,把查询的结果放到一个临时变量中然后返回),你能不能用调试器单步调试看看第二个查询实际上返回结果?我怀疑您可能需要在返回之前先致电
.ToList()。
标签: asp.net asp.net-mvc linq lambda