2012年4月27日星期五

LINQ语句检查空对象的问题

LINQ语句检查空对象的问题

今天在写博客的页面集功能,根据URL去寻找Page,LINQ语句从SitePage的GetModelList()集合中获取符合条件的page,如果查询不到则跳转到404页面。代码是这样的:

var page = (from p in optSitePage.GetModelList()            where p.VirtualUrlPath.ToLower() == requestTitle.ToLower()            select p).First();if (null == page){    context.Response.Redirect("/404.html");    return;}

我故意传了个不存在的URL,结果linq语句直接报错:System.InvalidOperationException: Sequence contains no elements。查了下MSDN发现用了First()的话,如果结果集中没有元素,它是不会返回null的。改成FirstOrDefault()就 好了。

var page = (from p in optSitePage.GetModelList()            where p.VirtualUrlPath.ToLower() == requestTitle.ToLower()            select p).FirstOrDefault();

traceback http://www.wyjexplorer.cn/Home/View/D44F795B009E20FD.html


TAG:LINQ