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

问题描述 投票:1回答:2

我收到此错误,因为我在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的地方。我什至不确定这种在键中包含键值对的方法是否正确。请帮助。

c# asp.net visual-studio sql-server-2008 sortedlist
2个回答
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
投票

slCodes是一个SortedList对象,其中包含用于键的字符串和用于值的SortedList <string, string>,但是您没有在其中添加这些类型;而不是2个字符串对象。

您需要添加一个字符串和一个SortedList <string, string>,而不是2个字符串对象。

如果要向slCodes中的现有排序列表中添加内容,则必须先查找该列表,然后再向其中添加2个字符串。

© www.soinside.com 2019 - 2024. All rights reserved.