繁体   English   中英

在linq中合并两个查询

[英]Combine two queries in linq

我有两个linq查询,如下所示:

GroupNamesWithCorrespondingEffects 
        = new ObservableCollection<GroupNameWithCorrespondingEffect>(
                                  from g in db.Groups
                                  select new GroupNameWithCorrespondingEffect
                                                {
                                                    GroupID = g.GroupID,
                                                    GroupName = g.GroupName,
                                                    CorrespondingEffect = g.Master_Effects.Effect

                                                }
                                         );

 GroupNamesWithCorrespondingEffects 
          = new ObservableCollection<GroupNameWithCorrespondingEffect>       
                       (GroupNamesWithCorrespondingEffects.
                            Where(u => !GetAllChildren(25).
                                        Select(x => x.GroupID).
                                        Contains(u.GroupID)).ToList());

现在如何结合这两个查询?

您可以直接将此传递给ObservableCollection的构造函数:

from g in groups
let g = select new GroupNameWithCorrespondingEffect
        { 
            GroupID = g.GroupID,
            GroupName = g.GroupName,
            CorrespondingEffect = g.Master_Effects.Effect
        }
where !GetAllChildren(25)
       .Select(x => x.GroupID)
       .Contains(g.GroupID)
select g

我不确定EF是否能够组成第一部分和第二部分(我不记得从顶部开始是否Contains IN子句中的Contains ,我的EF有点生锈),但是您没有无论如何,这样做的效果与您相同。 如果它能够撰写,那么通过这种方式您将获得更有效的执行。

如果您不介意将SQL样式和扩展方法语法混合使用,则可以执行以下操作:

GroupNamesWithCorrespondingEffects 
        = new ObservableCollection<GroupNameWithCorrespondingEffect>(
                (from g in groups
                 select new GroupNameWithCorrespondingEffect
                     { GroupID = g.GroupID,
                       GroupName = g.GroupName,
                       CorrespondingEffect = g.Master_Effects.Effect
                     })
                 .Where(u => !GetAllChildren(25)
                        .Select(x => x.GroupID)
                        .Contains(u.GroupID))
                 .ToList());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM