【问题标题】:Linq Multiple Joins to SelectListLinq 多个连接到 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 syntaxquery syntax。请在更新问题时始终选择其中一项。

标签: linq join


【解决方案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找到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    相关资源
    最近更新 更多