4

我有一个实体,它有一个名为标签的字符串属性。我想根据某个字符串是否位于 Tags 属性中来查询此实体。

因此,例如,我将有一个函数 IList GetEntityByTag(string tag),这将返回在其“Tags”属性中具有 tag 值的所有实体。

我尝试通过 ICriteria 方法... Expression.In(PropertyName, Value) 但这恰恰相反。我需要像 Expression.In(Value, PropertyName) 这样的东西。

也许 IQuery 会是一个更好的策略,但我无法为 Property CONTAINS 'abc' 找到任何类型的 HQL 语句。

任何帮助或方向都将非常感谢!

4

2 回答 2

3

如果您想知道标签是否是您的 Tags 属性中的子字符串,您可能需要考虑以下提示:

  • 您可能希望先将要搜索的字符串和要搜索的字符串都转换为小写。Expression.ilike 为您执行此操作。分数。
  • 要确定您的搜索词是否在字段中的任何位置,您可以将 ilike 函数中的 MatchMode 参数设置为 MatchMode.ANYWHERE。

如果,正如你之前评论的那样,

假设我的财产,“标签”= a;b;c;d;e。我想知道标签中是否存在“a”。Expression.Like("Tags", "a") 会返回 true 吗?

如果 'a;b;c;d;e' 是一个字符串,Expression.ilike("Tags", "a", MatchMode.ANYWHERE) 将返回 true。

于 2009-02-10T15:57:36.683 回答
0

你是说 Expression.Like(PropertyName, Value) 吗?

于 2009-02-08T15:51:24.617 回答