簡體   English   中英

如何在C#中的另一個排序列表中添加排序列表?

[英]How to add Sorted List within another Sorted List in C#?

我收到此錯誤,因為我在SortedList中有重復的鍵。

項目已添加。 字典中的鍵:“ 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>>();

但是我現在遇到的問題是如何添加到SortedList中的SortedList中? 我被困在這里:

    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中時遇到的問題。 我什至不確定這種在鍵中包含鍵值對的方法是否正確。 請幫忙。

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

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);
}

slCodes是一個SortedList對象,其中包含鍵的字符串和值的SortedList(string,string),但是您不會向其中添加這些類型; 而不是2個字符串對象。

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

如果要向slCodes中的現有排序列表中添加內容,則必須先查找該列表,然后再向其中添加2個字符串。

編輯:由於某些原因,堆棧溢出使“ <>”不可見,因此我使用了括號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM