在 NHibernate QueryOver 中使用 IsLike
Using IsLike in NHibernate QueryOver
我知道它已经为这个错误提供了一些解决方案,但我不知道为什么会出现这个错误。当我在没有过滤的情况下加载列表时它起作用了。
if (searchString != "") {
query = _pagedDataQueryProcessor.GetDefaultQuery<Data.Entities.Password>()
.Where(
Restrictions.Disjunction()
.Add(Restrictions.On<Data.Entities.Password>(x => x.Name).IsLike(searchString))
.Add(Restrictions.On<Data.Entities.Password>(x => x.Description).IsLike(searchString))
.Add(Restrictions.On<Data.Entities.Password>(x => x.PasswordText).IsLike(searchString))
);
}
我发现了问题所在
解法:
if (searchString != "") {
query = _pagedDataQueryProcessor.GetDefaultQuery<Data.Entities.Password>()
.Where(
Restrictions.Disjunction()
.Add(Restrictions.On<Data.Entities.Password>(x => x.Name).IsLike("%" + searchString + "%"))
.Add(Restrictions.On<Data.Entities.Password>(x => x.Description).IsLike("%" + searchString + "%"))
.Add(Restrictions.On<Data.Entities.Password>(x => x.PasswordText).IsLike("%" + searchString + "%"))
);
我改变了什么?我没有“%”。
这里我想过滤一个列表,但是当我在输入中写一些东西时,我总是得到一个空列表。
searchstring 是过滤后的词
data.entities.password 是 db
上的列表
谁能帮帮我,我不知道我做错了什么。
您需要添加通配符或向 IsLike
添加第二个参数。
...IsLike("%" + searchString + "%"))
您可以将通配符放在字符串的任何位置,例如仅在开头或仅在结尾。
或
...IsLike(searchString, MatchMode.Anywhere)
您也可以使用 MatchMode.Start
或 MatchMode.End
。
我知道它已经为这个错误提供了一些解决方案,但我不知道为什么会出现这个错误。当我在没有过滤的情况下加载列表时它起作用了。
if (searchString != "") {
query = _pagedDataQueryProcessor.GetDefaultQuery<Data.Entities.Password>()
.Where(
Restrictions.Disjunction()
.Add(Restrictions.On<Data.Entities.Password>(x => x.Name).IsLike(searchString))
.Add(Restrictions.On<Data.Entities.Password>(x => x.Description).IsLike(searchString))
.Add(Restrictions.On<Data.Entities.Password>(x => x.PasswordText).IsLike(searchString))
);
}
我发现了问题所在
解法:
if (searchString != "") {
query = _pagedDataQueryProcessor.GetDefaultQuery<Data.Entities.Password>()
.Where(
Restrictions.Disjunction()
.Add(Restrictions.On<Data.Entities.Password>(x => x.Name).IsLike("%" + searchString + "%"))
.Add(Restrictions.On<Data.Entities.Password>(x => x.Description).IsLike("%" + searchString + "%"))
.Add(Restrictions.On<Data.Entities.Password>(x => x.PasswordText).IsLike("%" + searchString + "%"))
);
我改变了什么?我没有“%”。
这里我想过滤一个列表,但是当我在输入中写一些东西时,我总是得到一个空列表。
searchstring 是过滤后的词
data.entities.password 是 db
上的列表谁能帮帮我,我不知道我做错了什么。
您需要添加通配符或向 IsLike
添加第二个参数。
...IsLike("%" + searchString + "%"))
您可以将通配符放在字符串的任何位置,例如仅在开头或仅在结尾。
或
...IsLike(searchString, MatchMode.Anywhere)
您也可以使用 MatchMode.Start
或 MatchMode.End
。