2013-06-24 37 views
1

我使用EDM從DataBase View Table獲取值 查詢爲IList類型。列表集合使用Where條件給出空值的篩選

它提供了一些元素集合。

從這個集合,我特林 過濾基於一列中的數據,但並不給出 過濾數據,即使根據病情的 查詢是像下面的數據存在。

對於從DataBase獲取數據//它是 獲取一些數據集合。

IList<EFModel.EntityModel.vwGetActiveEmployee> activeEmployeelist = TimeOffService.GetActiveEmployees(); 

在這裏,我想fileter基於列IsManger數據(值1或0) 對於我寫的像

IList<EFModel.EntityModel.vwGetActiveEmployee> managerlist = activeEmployeelist.Where(p => p.IsManager == 1).Select(p => p) as IList<EFModel.EntityModel.vwGetActiveEmployee>; 

但這裏的Managerlist顯示空值。當我使用以下

var emplistVar = activeEmployeelist.Where(p => p.IsManager.Equals(1)).Select(p => p); 

過濾數據 它表示數據的一些集合與「VAR」型,但如果我給 類型表示它空。這裏的原因是什麼,這個數據是從數據庫視圖數據取得的 。

+0

從我有限的理解,這是由於延遲加載。即查詢僅在訪問元素時運行,或者在返回值中使用'foreach'或'for'來遍歷。這個想法是一旦執行語句就不會獲取結果。查找懶加載來理解這一點。 – shahkalpesh

回答

6

此代碼(重新格式化,以避免滾動):

IList<EFModel.EntityModel.vwGetActiveEmployee> managerlist 
    = activeEmployeelist.Where(p => p.IsManager == 1) 
         .Select(p => p) 
     as IList<EFModel.EntityModel.vwGetActiveEmployee>; 

...將總是managerlist作爲null,爲Select沒有在我見過的任何實施返回IList<T>。我懷疑你想:

IList<vwGetActiveEmployee> managerlist = 
    activeEmployeelist.Where(p => p.IsManager == 1) 
         .ToList(); 

需要注意的是,除非你是故意執行引用類型的轉換,可以有效地失敗(在這種情況下,你通常應覈對null的結果),你應該更喜歡投下代替as。如果您在此處使用了演員表,則會立即看到異常情況,因爲Select返回的值不是您期望的類型。

+0

謝謝..我會試試這個 –