在一个ActionResult MVC 3项目中,我获得了以下ASP.NET:
public ActionResult Index(string searchWord, GridSortOptions gridSortOptions, int? page)
{
var userListModel = new PagedViewModel<UserModel>
{
ViewData = ViewData,
Query = conn.Query<UserModel>("select Id, Login, Firstname, Lastname from User").AsQueryable(),
GridSortOptions = gridSortOptions,
DefaultSortColumn = "Id",
Page = page,
PageSize = 20
}
.AddFilter("searchWord", searchWord, u => u.Login.Contains(searchWord) || u.Firstname.Contains(searchWord) || u.Lastname.Contains(searchWord))
.Setup();
return View(userListModel);
}如果searchWord为null,则一切正常,但一旦添加了searchWord,MVCContrib网格就会出现“对象引用未设置为对象实例”的错误。如果我将.Contains)从AddFilter方法中移除,它就能工作,如下所示:
.AddFilter("searchWord", searchWord, u => u.Login == searchWord)有人知道解决这个问题的方法,或者为什么我不能在Dapper IQueryable中使用Contains?
谢谢
编辑:
多亏了萨姆的回答,这个问题才得以解决:
.AddFilter("searchWord", searchWord, u => (!string.IsNullOrEmpty(u.Login) && u.Login.Contains(searchWord))发布于 2012-01-26 03:24:04
这不是一个真正的Dapper问题。
您有一个对象集合,其中一些对象具有null属性,您正在尝试用一个.Contains来设置它们。
var users = new UserModel[] { new UserModel(); }
// Login is null
users.AsQueryable().where(u => u.Login.Contains("bob")); // kaboomhttps://stackoverflow.com/questions/9006748
复制相似问题