【问题标题】:C# LINQ GroupJoin skip itemC# LINQ GroupJoin 跳过项目
【发布时间】:2015-09-01 12:53:54
【问题描述】:

我有以下代码

  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个元素,是否可以跳过迭代并返回配置文件?

【问题讨论】:

  • 你的意思是要遍历profilesWithMailLists 直到有一个p2lmongo 有0 个元素?或者你想过滤这些吗?

标签: c# linq linq-to-entities


【解决方案1】:

尝试使用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())

这里只是从臀部射击。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    相关资源
    最近更新 更多