相比之下,非類型化數據集沒有相應的內置模式。與類型化數據集壹樣,非類型化數據集也包含表、列等,但它們只作為集合公開。(但是,在非類型化數據集中手動創建表和其他數據元素後,可以使用數據集的WriteXmlSchema方法將數據集的結構作為架構導出。)
類型化訪問不僅更易於閱讀,而且完全受Visual Studio代碼編輯器中的IntelliSense支持。除了更易於使用之外,類型化數據集的語法還提供了編譯時的類型檢查,這大大降低了向數據集成員賦值時出錯的可能性。如果更改數據集中的列名並編譯應用程序,將會收到壹個生成錯誤。通過雙擊任務列表中的生成錯誤,可以直接轉到引用舊列名的代碼行。對類型化數據集中的表和列的訪問在運行時也稍微快壹些,因為訪問是在編譯時確定的,而不是在運行時通過集合確定的。
雖然類型化數據集有很多優點,但在很多情況下還是需要非類型化數據集。最明顯的情況是數據集沒有可用的模式。例如,當應用程序與返回數據集的組件進行交互,而您事先不知道它的結構是什麽時,就會發生這種情況。類似地,有時使用的數據沒有靜態和可預測的結構。在這種情況下,使用類型化數據集是不切實際的,因為對於數據結構中的每次更改,您都必須重新生成類型化數據集類。
更常見的是,很多時候可能需要在沒有可用模式的情況下動態創建數據集。在這種情況下,數據集只是壹個方便的結構,可以用來保留信息(只要數據可以用關系的方式表示)。同時,您還可以利用數據集的功能,例如序列化傳遞給另壹個進程的信息或編寫XML文件的能力。