1

PredicateBuilder を使用して where 句を生成しています

var locationFilter = PredicateBuilder.True<dbCompanyLocation>();
locationFilter = locationFilter.And(s => s.IsPrimary == true && s.State == practiceState);

var companyPredicate = PredicateBuilder.True<dbCompany>();
companyPredicate = companyPredicate.And(c => c.dbCompanyLocations.Where(locationFilter));

次のエラーが表示されます。誰かがこれを助けることができますか、それとも何か間違っていますか。

インスタンス引数: 'System.Data.Linq.EntitySet' から 'System.Linq.IQueryable' に変換できません

4

1 に答える 1

1

当面の問題dbCompany.dbCompanyLocationsは、ではなくEntitySetを実装していることです。これは、その拡張メソッドが を期待していることを意味しますが、提供している変数は です。IEnumerable<T>IQueryable<T>WhereFunc<dbCompanyLocation, bool>locationFilterExpression<Func<dbCompanyLocation, bool>>

メソッドを呼び出してFunc<dbCompanyLocation, bool>fromを作成できます。locationFilterCompile

ただし、別の問題は、型チェックを行ったとしても、bool ではなくan を返すためc => c.dbCompanyLocations.Where(locationFilter)、述語ではないことです。おそらくieの代わりに使用するつもりでしたWhereIEnumerable<T>AnyWhere

companyPredicate = companyPredicate.And(c => c.dbCompanyLocations.Any(locationFilter.Compile()));
于 2012-06-26T21:33:37.807 に答える