c# - 过滤 GroupJoin 查询

标签 c# asp.net-mvc asp.net-mvc-3 linq linq-to-entities

我有一个 GroupJoin 查询,它返回如下结果:

IEnumerable<ICD.ViewModels.HomeSearchViewModel> query = ICDUnitOfWork.AlphaGroups.Find()
    .GroupJoin(ICDUnitOfWork.Alphas.Find(),
        a => a.AlphaGroupID,
        g => g.AlphaGroupID,
        (alphaGroups, alphas) =>
            new ICD.ViewModels.HomeSearchViewModel
            {
                AlphaGroups = alphaGroups,
                Alphas = alphas
            });

Alphas 是 IEnumerable 并且一个 AlphaGroup 包含多个 Alphas。他们都有一个名为“Title”的属性(property)。我需要根据“Title”属性过滤包含字符串“baby”的结果。我怎样才能做到这一点?

编辑:我还应该提到,如果特定的 alpha 组标题包含“baby”,则应显示具有 AlphaGroupID 的所有相应 Alpha。

最佳答案

建议不要使用.Any(),因为可以映射到嵌套联合,而只是过滤预连接

尝试

IEnumerable<ICD.ViewModels.HomeSearchViewModel> query = 
     ICDUnitOfWork.AlphaGroups.Find()
                  .Where(g => g.Title.Contains("baby"))
                  .GroupJoin(ICDUnitOfWork.Alphas.Find()
                                          .Where(a => a.Title.Contains("baby"),
                             a => a.AlphaGroupID,
                             g => g.AlphaGroupID,
                             (alphaGroups, alphas) =>
                                new ICD.ViewModels.HomeSearchViewModel
                                 {
                                  AlphaGroups = alphaGroups,
                                  Alphas = alphas
                                 }).AsEnumerable();

关于c# - 过滤 GroupJoin 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13365844/

相关文章:

c# - 为什么不将所有服务类都集中到一个工厂方法中(而不是注入(inject)接口(interface))?

c# - 如何使用 .Net Core 在 Linux 上从同一网络的远程计算机获取 mac 地址

asp.net-mvc - 测试自定义 ActionResult

asp.net-mvc - 如何让私有(private)网页被谷歌抓取

c# - 如何检查访问站点的用户是在根页面还是其他页面?

c# -/unsafe标志对应的是 "preprocessor"符号吗?

c# - 通过 ExecuteNonQuery 检查表中的记录是否存在于数据库中

ASP.NET MVC - 控件如何保持其状态

asp.net-mvc - ActionName 的目的

c# - 从巨大的数据库表中读取