我有一個實現,我需要循環通過文檔集合並基於一定條件合併文檔。如何合併列表中的項目<>集合C#
合併條件非常簡單,如果存在的文檔的文檔類型與後面的文檔的文檔類型相同,則從後面的文檔類型中複製所有頁面,並將其附加到當前文檔的頁面,並從集合中刪除後面的文檔。 注意:response.documents
和response.documents[].pages
都是列表<>集合。
我正在嘗試這個,但得到下面的異常一旦我刪除文檔。
集合被修改枚舉可以不執行
下面是代碼:
int docindex = 0;
foreach(var document in response.documents)
{
string presentDoctype = string.Empty;
string laterDoctype = string.Empty;
presentDoctype = response.documents[docindex].doctype;
laterDoctype = response.documents[docindex + 1].doctype;
if (laterDoctype == presentDoctype)
{
response.documents[docindex].pages.AddRange(response.documents[docindex + 1].pages);
response.documents.RemoveAt(docindex + 1);
}
docindex = docindex + 1;
}
例:
reponse.documents[0].doctype = "BankStatement" //page count = 1
reponse.documents[1].doctype = "BankStatement" //page count = 2
reponse.documents[2].doctype = "BankStatement" //page count = 2
reponse.documents[3].doctype = "BankStatement" //page count = 1
reponse.documents[4].doctype = "BankStatement" //page count = 4
預期結果:
response.documents[0].doctype = "BankStatement" //page count = 10
請建議。讚賞您的幫助。
您收到枚舉錯誤,因爲您更改了集合,因此枚舉器會失效。使用簡單的for循環代替foreach。 – ViRuSTriNiTy
我建議先搜索錯誤消息 - 即https://www.bing.com/search?q=C%23+collection+was+modified+enumeration+may+not+execute,這應該會給你帶來好處許多基本的.Net例外的問題的解釋。這也可以讓你改善你的問題,解釋爲什麼標準方法不適合你(即使用'for'和仔細索引而不是'foreach')。 –