2015-10-16 80 views
1

我得到這個錯誤,因爲我有一個SortedList中的重複鍵。如何在C#中的另一個分類列表中添加分類列表?

項目已被添加。鍵入字典:'V22.1'鍵被添加:'V22.1'

但是這些重複鍵的值是不同的。所以我想在前面的重複鍵之前添加另一個對象以便找到它的值。我正在考慮將SortedList放入SortedList中。我的意圖例如:

(key)"ICD9" : (key)"V22.1" : (value)"Supervision of other normal pregnancy" 
(key)"ICD10" : (key)"V22.1" : (value)"Motorcycle passenger injured in collision with two- or three-wheeled motor vehicle in nontraffic accident" 

我希望這是有道理的。我想這樣做是這樣的:

SortedList<string, SortedList<string, string>> slCodes; 
    slCodes = new SortedList<string, SortedList<string, string>>(); 

但我現在卡住的部分是如何添加到排序列表中的排序列表?我卡在這裏:

strDesc = tbDesc.Text.Trim(); 
    tblCodes = new DataTable(); 
    GetCodesByDescription(strDesc, ref tblCodes); //<--This queries from database 
    DataView dvCodes = new DataView(tblCodes); 

    dvCodes.RowFilter = "CodeType='ICD10' OR CodeType='ICD9'"; 
    foreach(DataRowView drv in dvCodes) 
    { 
     slCodes.Add(drv["Code"].ToString().Trim(), //<--Throws error here. 
      drv["Description"].ToString().Trim()); 
    } 

這是目前我堅持添加到SortedList內的SortedList。我甚至不確定這種在密鑰中使用鍵值對的方法是否正確。請幫忙。

+0

作爲這個過程的結果,你可以給我們更多關於你想看到的數據的解釋嗎?拋開特定的集合類型('SortedList')並描述樣例輸入和輸出。 – sfuqua

+0

您需要檢查drv [「Code」] .ToString()是否已經在slCodes中。 – tdbeckett

回答

0

您需要先檢查代碼類型以確定要添加到哪個子列表以及是否需要創建新的子列表。

foreach(DataRowView drv in dvCodes) 
{ 
    var codeType = drv["CodeType"].ToString().Trim(); 
    var code = drv["Code"].ToString().Trim(); 
    var description = drv["Description"].ToString().Trim(); 
    if(slCodes.ContainsKey(codeType)) 
    { 
     slCodes[codeType].Add(code, description); 
    } 
    else 
    { 
     var subList = new SortedList<string, string>(); 
     subList.Add(code, description); 
     slCodes.Add(codeType, subList); 
    } 
} 

或者因爲你只拉ICD9和ICD10碼,你可以預填充兩個子列表

var slCodes = new SortedList<string, SortedList<string, string>>(); 
slCodes.Add("ICD9", new SortedList<string, string>()); 
slCodes.Add("ICD10", new SortedList<string, string>()); 

dvCodes.RowFilter = "CodeType='ICD10' OR CodeType='ICD9'"; 
foreach(DataRowView drv in dvCodes) 
{ 
    var codeType = drv["CodeType"].ToString().Trim(); 
    var code = drv["Code"].ToString().Trim(); 
    var description = drv["Description"].ToString().Trim(); 
    slCodes[codeType].Add(code, description); 
} 
+0

哇,這太棒了。這對我來說很有意義。現在我可以開始計算如何遍歷排序列表中的每個排序列表。由於排序列表的設計並不困難,所以現在沒什麼問題。這太棒了!謝謝! –

0

slCodes是一個包含了值的鍵和排序列表(字符串,字符串)串的排序列表對象,但你並沒有將這些類型添加到它;而是2個字符串對象。

您需要添加一個字符串和一個SortedList(字符串,字符串),而不是2個字符串對象。

如果你想添加一些東西到slCodes中現有的排序列表,那麼你必須先查找所述列表,然後再添加2個字符串。

編輯:堆棧溢出使'<>'由於某種原因不可見,所以我帶括號。

相關問題