我经常需要通过像publishStart
、publishEnd
和active
这样的字段来限制SELECT操作。
我在几个不同的表中都有这些字段。因此,只应选择符合以下条件的行:
a: active == true;
b: publishStart < now;
c: publishEnd > now;
因此,举个例子:
db.myTable.SingleOrDefault(a => (a.ID == _theID
//now the active and start-end part:
&& ((a.publishEnd > DateTime.Now) || (a.publishEnd == null))
&& ((a.publishStart <= DateTime.Now) || (a.publishStart == null))
&& a.active == true));
这段话有些冗长,所以我想知道是否可以创建一个类似于 (扩展?) 方法的东西:
这是一段比较长的话,所以我想知道是否可以创建一个(扩展?)方法,类似于:
db.myTable.SingleOrDefault(a => (a.ID == _theID).isActive()
isActive()
方法提供了上述代码片段中的3行代码。
我该如何做呢? 有没有更好的方法来清理代码?
SingleOrDefault
之前调用IsActive
,这样它就可以在您只取一个项目之前过滤活动项目,除非仅有一个具有该ID的项目。 - Servy