最近在一个项目中需要找出已过期的记录,但是在实现中发现了一个错误,代码如下:
实体模型Article.cs
3
4
5
6
7
8
9
10
11
|
public
class
Article
{
public
int
ID {
get
;
set
; }
public
int
CategoryID {
get
;
set
; }
public
string
Title {
get
;
set
; }
public
string
Container {
get
;
set
; }
public
DateTime UpdateDate {
get
;
set
; }
}
|
查询代码如下:
3
4
5
6
7
8
9
10
11
12
|
public
class
HomeController : Controller
{
DB db =
new
DB();
public
ActionResult Index()
{
int
day= 30;
var
articles = db.Articles.Where(r => r.UpdateDate.AddDays(day) > DateTime.Now).ToList();
return
View(articles);
}
}
|
上面的代码是通过找出发布信息超过30天的记录,但是运行时发生错误,提示:
到网上搜索了一下,说是利用Expression表达式树可以解决这个问题,于是开始动手实践,通过不懈的努力终于解决了这个问题,于是记录下来以备不时之需。
3
4
5
6
7
8
9
10
11
12
13
|
public
class
HomeController : Controller
{
DB db =
new
DB();
public
ActionResult Index()
{
int
day= 30;
Expression<Func<Article,
bool
>>
where
= r => r.UpdateDate.AddDays(day) < DateTime.Now;
var
articles = db.Articles.Where(
where
.Compile());
return
View(articles);
}
}
|
结果如下: