NHibernate准则问题

NHibernate准则问题,nhibernate,Nhibernate,我在hibernate中有一个查询,如下所示: string[] NewsId = new string[] {"ABC","DEF","GHI"}; public IEnumerable<News> NewsSelected(string[] NewsId) { List<ICriterion> criteria = new List<ICriterion>(); criteria.Add(Restrictions

我在hibernate中有一个查询,如下所示:

string[] NewsId = new string[] {"ABC","DEF","GHI"};

public IEnumerable<News> NewsSelected(string[] NewsId)
    {

        List<ICriterion> criteria = new List<ICriterion>();
        criteria.Add(Restrictions.In("Id", NewsId));
        var results = _repository.GetByCriteria(criteria);
        return results;
    }
string[]NewsId=新字符串[]{“ABC”、“DEF”、“GHI”};
公共IEnumerable NewsSelected(字符串[]NewsId)
{
列表条件=新列表();
标准.添加(限制.In(“Id”,NewsId));
var results=\u repository.GetByCriteria(标准);
返回结果;
}
它返回零,但是

public IEnumerable<News> NewsSelected(string[] NewsId)
    {

        List<ICriterion> criteria = new List<ICriterion>();
        criteria.Add(Restrictions.In("Id", new[]{"ABC","DEF","GHI"}));
        var results = _repository.GetByCriteria(criteria);
        return results;
    }
public IEnumerable NewsSelected(字符串[]NewsId)
{
列表条件=新列表();
标准.增加(限制.在(“Id”,新的[]{“ABC”,“DEF”,“GHI”}));
var results=\u repository.GetByCriteria(标准);
返回结果;
}

工作完美。这里缺少什么?

您需要将查询参数复制到一个局部变量,如下所示:

string[] NewsId = new string[] {"ABC","DEF","GHI"};

public IEnumerable<News> NewsSelected(string[] NewsId)
{
    var newsId = NewsId;

    List<ICriterion> criteria = new List<ICriterion>();
    criteria.Add(Restrictions.In("Id", newsId));
    var results = _repository.GetByCriteria(criteria);
    return results;
}
string[]NewsId=新字符串[]{“ABC”、“DEF”、“GHI”};
公共IEnumerable NewsSelected(字符串[]NewsId)
{
var newsId=newsId;
列表条件=新列表();
标准.添加(限制.In(“Id”,newsId));
var results=\u repository.GetByCriteria(标准);
返回结果;
}

在第一个代码段中,谁调用了
newselected
,并使用了哪些参数?函数上面的定义应该是静态数组声明吗?在第二个代码段中,如果没有在任何地方使用,为什么会有一个
NewsId
参数?因此,在调试器的第一个实例中,NewsId包含与第二个代码段中完全相同的数据?调用第一个函数的方式肯定有问题。