在SortedDictionary中添加

本文关键字:添加 SortedDictionary | 更新日期: 2023-09-27 18:27:17

如果表名和数组列表存在于相同的键添加记录中,我想将表名添加为字符串,将表值添加为arraylist。。。此处显示的密钥已存在。我可以修改的地方:

SortedDictionary<string, ArrayList> DealInfo = new SortedDictionary<string, ArrayList>();
ArrayList Deal = new ArrayList();
string DealName=string.Empty;
foreach (DataTable table in RecentAddedDeal.Tables)
{
    foreach (DataRow dr in table.Rows)
    {
        if (!DealInfo.ContainsKey(Convert.ToString(dr["DealTab"])))
        {
            DealName = Convert.ToString(dr["DealTab"]);
        }
        Deal.Add(dr);
        DealInfo.Add(DealName, Deal);
    }
}

在SortedDictionary中添加

很难准确说出你想要什么,因为你的描述说你想使用TableName作为键,但你的代码是从行中添加一列作为键。

按照TableName应该是关键的想法,这样的东西应该有效:

var dealInfo = new SortedDictionary<string, List<DataRow>>();
foreach (DataTable table in RecentAddedDeal.Tables)
{
    if (!dealInfo.ContainsKey(table.TableName))
    {
        dealInfo.Add(table.TableName, table.Rows.Cast<DataRow>().ToList());
    }
}

按照你想在每一行中为键划掉一列的想法,你可以做这样的事情:

var dealInfo = new SortedDictionary<string, List<DataRow>>();
foreach (DataTable table in RecentAddedDeal.Tables)
{
    foreach (DataRow row in table.Rows)
    {
        var dealName = row["DealTab"].ToString();
        if (dealInfo.ContainsKey(dealName))
        {
            dealInfo[dealName].Add(row);
        }
        else
        {
            dealInfo.Add(dealName, new List<DataRow> {row});
        }
    }
}

要用特定DealName的行中的数据填充ListView,您可以找到该交易名称的字典条目,并通过以下方式访问行列表:

foreach (DataRow row in dealInfo["SomeDealName"])
{
    // Here you have access to the rows where row["DealTab"] == "SomeDealName"
    // You can fill a list view with some column value from the row like:
    listView1.Add(row["SomeColumnName"].ToString());
}