2014-02-17 31 views
0

我有两个List T对象。一个是可用论坛列表,另一个是用户选择的论坛。这是在jQuery Ajax调用期间执行的,并将填充一个列表框。Linq加入两个对象以匹配客户选择的记录

其目的是我想标记用户订阅的论坛与“选定”,当然会在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)); 

于是就用什么办法来完成这个“匹配”的意见/方向将是非常赞赏。

回答

2

的目的是,我想标记,用户已经订阅了“选择”

一个left-join是你想要的这里的论坛上,这意味着在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 
       } 
+0

请参阅http://msdn.microsoft.com/en-us/library/bb397895.aspx作为参考。 – Tarik

+0

@Tarik谢谢,我已将您的链接添加到我的答案中。 – James

+0

Ohhhh我现在看到它是如何完成的。将连接转储到另一个对象然后匹配它。甜! – GPGVM

相关问题