我正在使用C#中的解析器從多個xml文件獲取數據並將它們放入我自己的數據庫中。Linq to XML單獨處理結果而不是列表
現在我有這個代碼的工作原理:
List<CaseFile> caseFiles =
(
from e in XDocument.Load(xmlDoc).Root.Elements("application-information").Elements("file-segments").Elements("action-keys").Elements("case-file")
select new CaseFile
{ (......)
}).toList();
這將創建CaseFile對象,我以後再發送給其他方法將它們的數據放入我的數據庫的列表。這個問題是我需要一次解析許多文件,有些大到1GB,但不能小於200MB,這就造成了對內存的巨大需求。
有沒有辦法修改我的語句,以便找到每個CaseFile,它會立即將其發送給其他方法,而不必先創建它們的完整列表?
該解決方案看起來像我想要的,但我遇到麻煩實施它。爲了使它工作,我必須使CaseFile類實現IEnumerable,但現在我必須讓它實現IEnumerator的方法,我不確定這是甚至在邏輯上是正確的(它似乎正在使CaseFiles成爲一個對象列表,它只是一個對象我想做一個列表)...它告訴我它現在不包含「添加」的定義(錯誤指向linq查詢的「from ...」行),我甚至沒有知道如何實現... – ConnorU
@ConnorU抱歉,沒有得到 - 爲什麼CaseFile應該實現IEnumerable? –
編譯器告訴我這麼...我把你建議的代碼,它不會運行,因爲它說CaseFile沒有實現它...「錯誤無法初始化類型'TrademarkParserproject.CaseFile'的集合初始值設定項,因爲它沒有實現'System.Collections。IEnumerable'「 – ConnorU