C# 如何使用nhibernate查询器拆分字符串字段并检查其是否包含指定字符串?

C# 如何使用nhibernate查询器拆分字符串字段并检查其是否包含指定字符串?,c#,nhibernate,queryover,C#,Nhibernate,Queryover,我正在尝试使用NHibernate QueryOver返回带有逗号分隔字符串的列(DoNotDisplay)不包含特定字符串(例如“3”)的结果 我尝试了以下方法: var query = session.QueryOver<Host>() .Where(h => !h.systemsNotToBeShown.Split(',').Contains("3")); public virtual string systemsNotToBeShown { get; set; }

我正在尝试使用NHibernate QueryOver返回带有逗号分隔字符串的列(DoNotDisplay)不包含特定字符串(例如“3”)的结果

我尝试了以下方法:

var query = session.QueryOver<Host>()
.Where(h => !h.systemsNotToBeShown.Split(',').Contains("3"));
public virtual string systemsNotToBeShown { get; set; }
var query = session.QueryOver<Host>()
.Where(h => !h.SystemsNotToBeShown.Contains(3));
var queryString = "( ( (select position('" + sourceId + "' in trim(NODISPONSYSTEM) ) > 0 from system.iota) = false) or trim(NODISPONSYSTEM) is null) ";
映射如下:

<property name="systemsNotToBeShown" column="DoNotDisplay" />
private virtual string _systemsNotToBeShown { get; set; }
public virtual List<int> SystemsNotToBeShown
{
   get
    {
    return string.IsNullOrEmpty(_systemsNotToBeShown) ? new List<int>() : _systemsNotToBeShown.Split(',').Select(Int32.Parse).ToList();
    }
     set { }
     }
我还尝试将映射属性设置为private,并在类本身中创建一个列表,然后根据该列表进行比较,如下所示:

<property name="systemsNotToBeShown" column="DoNotDisplay" />
private virtual string _systemsNotToBeShown { get; set; }
public virtual List<int> SystemsNotToBeShown
{
   get
    {
    return string.IsNullOrEmpty(_systemsNotToBeShown) ? new List<int>() : _systemsNotToBeShown.Split(',').Select(Int32.Parse).ToList();
    }
     set { }
     }

我不确定我做错了什么。任何帮助都会很好。

我通过以下方法解决了这个问题:

var query = session.QueryOver<Host>()
.Where(h => !h.systemsNotToBeShown.Split(',').Contains("3"));
public virtual string systemsNotToBeShown { get; set; }
var query = session.QueryOver<Host>()
.Where(h => !h.SystemsNotToBeShown.Contains(3));
var queryString = "( ( (select position('" + sourceId + "' in trim(NODISPONSYSTEM) ) > 0 from system.iota) = false) or trim(NODISPONSYSTEM) is null) ";
然后使用以下行将其添加到QueryOver:

.And(NHibernate.Criterion.Expression.Sql(queryString))