ループを使用して動的に構築するのに苦労しているカスタム フィルターにドキュメントを渡すことで、ドキュメントのリストをフィルター処理する必要があります。foreach
var mainPredicate = PredicateBuilder.True<Document>();
// mainPredicate is combined to other filters successfully here ...
var innerPredicate = PredicateBuilder.False<Document>();
foreach (var period in periods)
{
var p = period;
Expression<Func<Document, bool>> inPeriod =
d => d.Date >= p.DateFrom && d.Date <= p.DateTo;
innerPredicate = innerPredicate.Or(d => inPeriod.Invoke(d));
}
mainPredicate = mainPredicate.And(innerPredicate);
この最後の行:
documents = this.ObjectSet.AsExpandable().Where(mainPredicate).ToList();
この例外をスローします:
パラメーター 'd' は、指定された LINQ to Entities クエリ式でバインドされていませんでした。
この例外が発生する理由を知っている人はいますか? InPeriod メソッドに渡す 'd' パラメータがどこで失われるのかわかりません。これが機能するために何が欠けているのかわかりません。私のコードは、完全に機能する他の多くの例と同じです。式の呼び出しと、それが舞台裏でどのように機能するかについての追加の理論的な情報は大歓迎です。