2015-09-01 69 views
2

我有以下代碼C#LINQ跳過羣組加入項目

var profilesWithMailLists = profilesWithCf.GroupJoin(
       profile2Maillist, 
       p => p.SqlId, 
       p2l => p2l.ProfileId, 
       (p, mailLists) => 
       { 
        var p2lmongo = mailLists.Select<TProfile2MailList, Profile2MailList>(p2l => 
        { 
         return new Profile2MailList 
         { 
          MailListId = p2l.MailListId, 
          Status = p2l.Status, 
          SubscriptionDate = p2l.SubscriptionDate 
         }; 
        }); 
        p.MailLists = p2lmongo.ToArray(); 
        return p; 
       }); 

是否有可能跳過迭代和配置文件的恢復,如果p2lmongo集合將包含0元素?

+0

你的意思是你想遍歷'profilesWithMailLists' *直到*有一個帶有0個元素的'p2lmongo'?或者你想過濾掉這些嗎? –

回答

0

嘗試使用GroupByJoin而不是GroupJoin

一些代碼來說明(未測試或類型檢查):

var profilesWithMailListsAlt = 
    profilesWithCf.Join(
     profile2Maillist.GroupBy(p2l => p2l.ProfileId), 
     p => p.SqlId, 
     p2lgroup => p2lgroup.Key, 
     (p, mailListGroup) => 
     { 
      var p2lmongo = mailListGroup.Select<TProfile2MailList, Profile2MailList>(p2l => 
      { 
       return new Profile2MailList 
       { 
        MailListId = p2l.MailListId, 
        Status = p2l.Status, 
        SubscriptionDate = p2l.SubscriptionDate 
       }; 
      }); 
      p.MailLists = p2lmongo.ToArray(); 
      return p; 
     }); 

如果仍然想要嘗試明確通過改變

profile2Maillist.GroupBy(p2l => p2l.ProfileId) 

,這不包括空組什麼沒有做

profile2Maillist.GroupBy(p2l => p2l.ProfileId).Where(group => group.Any()) 

只是在這裏從臀部射擊。