Linq 联接两个对象以匹配客户选择的记录



我有两个列表 T 对象。一个是可用论坛的列表,另一个是用户选择的论坛。这是在jquery ajax调用期间执行的,并将填充一个列表框。

目的是我想用"选定"标记用户订阅的论坛,这当然会在 html 列表框中呈现为突出显示的行。

我开始写这个查询并停止了很短的时间。

var result = (from exf in ExtForum
    join custfrm in customer.ExternalForums on
    exf.Id equals custfrm.Id
    select new { id=exf.Id, name=exf.ForumName, isSelected=(true ? "selected" : "")  })
    .ToList();

这将仅返回匹配的论坛。我需要的是一个左外部查询,但在考虑这一点时,我认为这也是不正确的。嗯,这是正确的,因为它会返回所有可用的论坛,但现在我又回到了弄清楚如何标记我的比赛的原点。

我的改进方法是基本上将一个字符串对象返回给jquery,然后更新html控件。

ddlExtBoards.append($('<option></option>').val(option.id).html(option.name + " " + option.isSelected));

因此,关于完成此"匹配"的方法的建议/方向将不胜感激。

目的是我想用"选定"标记用户订阅的论坛

左联接是您想要的,这意味着ExtForum中的所有记录至少包含一次,以及任何其他与联接匹配的记录

var results = (from exf in ExtForum
               join custfrm in customer.ExternalForums on
               exf.Id equals custfrm.Id into customerForums
               from custForum in customerForums.DefaultIfEmpty()
               select new 
               {
                   id = exf.Id,
                   name = exf.ForumName,
                   isSelected = custForum != null
               }

最新更新