如何在c#中添加排序列表到另一个排序列表

本文关键字:排序 列表 另一个 添加 | 更新日期: 2023-09-27 18:18:13

我得到这个错误,因为我有一个重复的键在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#中添加排序列表到另一个排序列表

您需要首先检查代码类型,以确定要添加到哪个子列表,以及是否需要创建一个新的子列表。

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 <string, string>值的SortedList对象,但您不添加这些类型到它;而不是两个字符串对象。

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

如果你想在slCodes中添加一些东西到现有的排序列表中,那么你必须在添加2个字符串之前先查找所述列表。