2011-04-30 55 views
0

我在休眠的查詢,看起來像:NHibernate的標準問題

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; 
    } 

它返回零,但

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; 
    } 

完美。我在這裏錯過了什麼?

+0

在第一個片段,誰調用'NewsSelected'以怎樣的爭論?函數上面的定義應該是靜態數組聲明嗎?在第二個片段中,爲什麼你有一個'NewsId'參數,如果它沒有在任何地方使用? – 2011-05-01 06:56:40

+0

因此,在第一個實例的調試器中,NewsId與第二個代碼段中的數據完全相同?你調用第一個函數的方式肯定有問題。 – Vadim 2011-05-02 22:31:34

回答

0

您需要查詢參數複製到那樣的局部變量:

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; 
}