繁体   English   中英

LINQ预计过滤C#

[英]LINQ Projected Filtering C#

我想基于包含的表过滤我的LINQ查询但是遇到了一些麻烦。

这是原始声明,它有效:

return 
    this.ObjectContext.People.
        Include("Careers").
        Include("Careers.Titles").
        Include("Careers.Titles.Salaries");

现在我正在尝试使用预计过滤来过滤职业,但我遇到了麻烦。 它编译但它遗漏了标题和工资表,这会导致运行时错误,我似乎无法将这些表添加回来:

var query1 = (
    from c in 
    this.ObjectContext.People.
        Include("Careers").
        Include("Careers.Titles").
        Include("Careers.Titles.Salaries")
    select new
    {
        c,
        Careers = from Careers in c.Careers
                  where Careers.IsActive == true
                  select Careers
    });

    var query = query1.AsEnumerable().Select(m => m.c);
    return query.AsQueryable();

如何在过滤的查询中包含标题和工资表?

您可以大大简化查询,这可以解决您的问题。 我假设你想要所有至少有1个活跃职业的人:

var query = 
    from c in 
    this.ObjectContext.People.
        Include("Careers").
        Include("Careers.Titles").
        Include("Careers.Titles.Salaries")
    where c.Careers.Any(c => c.IsActive);

return query;

我会尝试类似的东西,

var query = from p in ObjectContext.People
            join c in ObjectContext.Careers on p equals c.Person
            where c.IsActive
            select p;

暂无
暂无

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

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