startDate
およびがクラスレベルの変数である場合endDate
は、次のメソッドを使用できます。
bool FilterDate(YourEntityType x)
{
return EntityFunctions.TruncateTime(x.Date.Value) >= EntityFunctions.TruncateTime(startDate) &&
EntityFunctions.TruncateTime(x.Date.Value) <= EntityFunctions.TruncateTime(endDate));
}
これは、次の方法で呼び出されます。
var results = myobjects.Where(FilterDate);
ただし、それらがローカルの場合、ラムダは2つのローカル変数(startDate
およびendDate
)を閉じているため、スコープが常に同じに保たれていない限り、単一のデリゲートを再利用すると動作が変わる可能性があります。
1つのオプションは、ヘルパーメソッドを作成することです。
static Func<YourEntityType, bool> CreateFilter(DateTime startDate, DateTime endDate)
{
Func<YourEntityType, bool> func = x => EntityFunctions.TruncateTime(x.Date.Value) >= EntityFunctions.TruncateTime(startDate) &&
EntityFunctions.TruncateTime(x.Date.Value) <= EntityFunctions.TruncateTime(endDate));
return func;
}
次に、これを次のように書くことができます。
var results = myobjects.Where(CreateFilter(startDate, endDate));