2012-03-18 62 views
-2

這是我的代碼片段。而我的問題是變量a始終設置爲空,所以我無法將更改提交到存儲庫。 任何想法爲什麼發生這種情況?NHibernate上的Linq總是返回null

var b = LoginTableRepository.Get().ToList(); 
var a = 
    (from obj in b 
     where obj.SessionVariable == _sessionVariable 
    select obj) as ObjectLogin; 

if(a != null) 
{ 
    // Code to update logout time and commit back to the repository. 
} 

變量b從LoginTable返回列表。但是'a'總是被設置爲空。

+0

我們如何知道發生了什麼?什麼是'obj'的類型和什麼是'_sessionVariable'?爲什麼你不使用強類型列表? – gdoron 2012-03-18 10:25:11

+0

_sessionVariable是一個字符串變量。使用foreach並遍歷列表是一種方法。但是,這看起來像一個更慢的方式。 – MSV 2012-03-18 10:30:28

回答

1

from obj in b where obj.SessionVariable == _sessionVariable select obj 

返回的東西的IEnumerable。如果您嘗試將其投射到ObjectLogin,它將始終失敗。

你可以嘗試

(from obj in b where obj.SessionVariable == _sessionVariable select obj).FirstOrDefault(); 

或類似從集合中選擇單個元素的東西。

+0

這就是問題所在。使用FirstOrDefault()解決了它。謝謝! – MSV 2012-03-18 10:36:10