如果startDate
和endDate
是一流水平的变量,你可以只使用一个方法:
var results = myobjects.Where(FilterDate);
:
bool FilterDate(YourEntityType x)
{
return EntityFunctions.TruncateTime(x.Date.Value) >= EntityFunctions.TruncateTime(startDate) &&
EntityFunctions.TruncateTime(x.Date.Value) <= EntityFunctions.TruncateTime(endDate));
}
这将随后通过被称为
但是,如果他们是本地人,您的lambda会关闭两个局部变量(startDate
和endDate
),这可能会导致行为或者如果您重复使用单个委托,则需要更改,除非范围始终保持不变。
一种选择是做一个辅助方法:
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));
请不要只问我们要解决的问题为您服务。告诉我们你是如何试图自己解决问题的,然后向我们展示结果是什么,并告诉我们为什么你觉得它不起作用。请参阅“[您尝试过什么?](http://whathaveyoutried.com/)”,以获得一篇您最近需要阅读的优秀文章。 – 2013-03-15 17:08:07
你在找'DateTime.Date'吗?更具体地说,“EntityFunctions.TruncateTime”与“DateTime.Date”有什么不同? – 2013-03-15 17:09:51
“startDate”和“endDate”本地或类级变量? – 2013-03-15 17:11:18