1

含まれているテーブルに基づいて LINQ クエリをフィルター処理したいのですが、問題が発生しています。

これが機能する元のステートメントです。

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

現在、投影フィルタリングを使用してキャリアをフィルタリングしようとしていますが、問題が発生しています。コンパイルはできますが、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();

フィルター処理されたクエリに役職と給与のテーブルを含めるにはどうすればよいですか?

4

2 に答える 2

3

クエリを大幅に簡略化できます。これにより、問題が解決するはずです。私はあなたが少なくとも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;
于 2012-09-25T15:11:34.337 に答える
0

私は次のようなことを試みます

var query = from p in ObjectContext.People
            join c in ObjectContext.Careers on p equals c.Person
            where c.IsActive
            select p;
于 2012-09-25T15:37:59.177 に答える