1

我正在尝试搜索所有社区用户以获取没有自定义属性集的人员列表。

使用查询 StringCriterion,有没有办法匹配空值而不是值?

我已经尝试了以下代码,但它不起作用。

    private static UserCollection GetAllUsersWithNoCode()
    {
        UserQuery query = new UserQuery();
        StringCriterion criterion = new StringCriterion();
        criterion.Value = null;
        query[AttributeNames.CommunityUser.AUTO_LOGIN_TOKEN] = criterion;
        return CommunitySystem.CurrentContext.DefaultSecurity.GetQueryResult(query);
    }

提前感谢任何可以提供帮助的人...

4

2 回答 2

1

刚刚收到 Episerver 支持的回复。他们声明无法以这种方式查询自定义属性。解决方案是使用空字符串手动将行添加到数据库(针对所有用户),然后使用 string.empty 值查找结果。

不是我希望的答案,但我稍后会测试并更新结果......

于 2014-04-09T09:46:28.613 回答
0

我看到这已经解决了,但是有一种方法可以检查空值。您可以使用类似这样的方法检查 null ,如果没有为特定对象创建属性,我不确定这是否有效:考虑这个伪代码,我没有测试它是否会编译。

public class NullStringCriterion : StringCriterion
{
    public override string GetQuery(string propertyName)
    {
        return String.Format(" ({0} IS NULL) ", propertyName);
    }
}

进而:

private static UserCollection GetAllUsersWithNoCode()
{
    UserQuery query = new UserQuery();
    query[AttributeNames.CommunityUser.AUTO_LOGIN_TOKEN] = new NullStringCriterion();
    return CommunitySystem.CurrentContext.DefaultSecurity.GetQueryResult(query);
}
于 2015-12-22T11:36:26.263 回答