Linq 多个连接到 SelectList
Posted
技术标签:
【中文标题】Linq 多个连接到 SelectList【英文标题】:Linq Multiple Joins to SelectList 【发布时间】:2021-06-28 13:10:37 【问题描述】:Below Linq 查询从 S 中返回我的值。
List<SelectListItem> sNos = _ctx.S.AsNoTracking()
.Select(n =>
new SelectListItem
Value = n.SID.ToString(),
Text = n.SNO
).ToList();
return new SelectList(sNos, "Value", "Text");
我现在需要通过应用连接来进一步完善我的 linq 查询,例如我的实体“b”有一个要连接的 id,所以我尝试过类似的方法,但现在运气不错。有人可以从语法上向我展示如何在 linq 中正确应用联接吗?
List<SelectListItem> sNos = _ctx.S.AsNoTracking()
join b in _ctx.B
on b.BID = s.SID
.Select(n =>
new SelectListItem
Value = n.SID.ToString(),
Text = n.SNO
).ToList();
return new SelectList(sNos, "Value", "Text");
这两个实体都已映射到我的 DBContext 页面中。
【问题讨论】:
我看到了方法链和查询理解语法的混合。选择一件事。还有很多关于如何通过 LINQ 连接两个表的答案。 @SvyatoslavDanyliv 你能详细说明一下我对 linq 查询很陌生。 @AndyWilliams 说有 2 种 LINQ 语法,method syntax 和 query syntax。请在更新问题时始终选择其中一项。 【参考方案1】:如果你有很多连接,我更喜欢查询语法:
var query =
from s in _ctx.S
join b in _ctx.B on b.BID equals s.SID
select new SelectListItem
Value = s.SID.ToString(),
Text = s.SNO,
BValue = b.SomeField
;
var result = query.ToList();
关于连接子句的详细信息可以在here找到。
【讨论】:
以上是关于Linq 多个连接到 SelectList的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 LINQ to SQL 连接到 SQL Server?