首页 > 解决方案 > Linq 多个连接到 SelectList

问题描述

下面的 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 页面中。

标签: linqjoin

解决方案


If you have a lot of joins, I prefer Query Syntax:

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();

Details on join clauses can be found here.


推荐阅读