2010-02-04 52 views
1
public List<NDT_Equipment> GetALLRecords() 
    { 
     using (NDT_DB) 
     { 
      return (from a in NDT_DB.NDTEquipment select a); 
     } 
    } 
  • 其中:NDT_DB - 自動生成的數據庫上下文類的類實例 NDT_Equipment - 數據庫上下文類的內部部分類使用LINQ在函數內部

  • 我想要什麼:

    • 返回表中的所有記錄NDTEquipment
  • 什麼即時得到: 「你缺少強制」的錯誤,每次我編譯..

問題: - 我是允許使用NDT_Equipment部分類作爲返回值在我的ViewModel中使用? ?或者我需要創建一個特定的類來包含此LINQ語句的結果,並且該類將用於我的VIEWMODEL?

+0

這不是一個真正的「部分班級」。所有部分指的是事實上,類的定義的一部分可能在多個CS文件中,說實話。這是一個完全成熟的類型。 – BobbyShaftoe 2010-02-04 14:43:06

回答

1

如果您確實不需要使用List<NDT_Equipment>提供的功能,我會更改該方法的簽名以返回IEnumerable<NDT_Equipment>而不是:

public IEnumerable<NDT_Equipment> GetALLRecords() 
{ 
    using (NDT_DB) 
    { 
     return (from a in NDT_DB.NDTEquipment select a); 
    } 
} 

更新
似乎是儘管代碼一些奇怪的事情;該方法中的泛型類型參數是NDT_Equipment,而數據實體被稱爲NDTEquipment;你是否指定了正確的類型參數?如果您在代碼中指向a,報告的是哪種類型?這是您在泛型類型參數中應該具有的類型。

+0

- 即時獲取「你錯過了演員」的錯誤,如果我改變它IEnumerable – Dennis 2010-02-04 14:49:27

+0

@Dennis:看到我更新的答案。 (編輯:我現在看到,@Anders也提到了這一點;儘管作爲替代解決方案,我的答案仍然存在) – 2010-02-04 14:54:27

7

試試這個:

return (from a in NDT_DB.NDTEquipment select a).ToList(); 
+0

不能隱式轉換類型System.Collections.Generic.List '到System.Collections.Generic.List Dennis 2010-02-04 14:46:31

+0

似乎你有兩個不同的類,那麼NDTEquipment和NDT_Equipment 。 – 2010-02-04 14:50:33

+0

Anders ..你是對的..它是我的愚蠢..我有另一個類定義爲NDT_Equipment(當我編碼時,intelisense提供firts)和我想要的是NDTEquipment(沒有下劃線)謝謝! – Dennis 2010-02-04 14:53:41

1

我認爲你得到的錯誤,因爲LINQ語句不返回一個列表(你的方法簽名狀態)。嘗試改變這一行:

return (from a in NDT_DB.NDTEquipment select a); 

要:

return (from a in NDT_DB.NDTEquipment select a).ToList(); 
+0

Dup of http://stackoverflow.com/questions/2200445/using-linq-inside-a-function/2200468#2200468 – 2010-02-09 15:40:12

+0

@Ruben Bartelink - 在SO中,我們遇到了重複問題,而不是答案。 – Oded 2010-02-09 15:42:01

+0

@Oded:我同意,但在這種情況下,我們有3個答案a)是有效的答案b)是相同的c)不是解決方案,因爲提問者搞砸了。我沒有看到這兩個誤導性的重複內容。但是我明白,一旦得到讚揚,刪除重複是多麼的困難。 – 2010-02-09 16:06:27

1

的LINQ查詢返回一個IQueryable,而不是一個列表,所以你需要把它轉換到一個列表:

return (from a in NDT_DB.NDTEquipment select a).ToList(); 
+0

Dup of http://stackoverflow.com/questions/2200445/using-linq-inside-a-function/2200468#2200468 – 2010-02-09 15:40:41