单击列表对象并在另一个列表框C#中显示其他多个列表对象

本文关键字:列表 对象 显示 其他 另一个 单击 | 更新日期: 2023-09-27 18:30:07

我已经接近答案了,但令人恼火的是,还不完全。到目前为止,我的代码是:

   private void lstIndividuals_SelectedIndexChanged(object sender, EventArgs e)
   {
        var individual = lstIndividuals.SelectedItem as Individual;
        var tempSimilarFilesToFile1 = new HashSet<Individual>();
        int Counter = 0;
        foreach (KeyValuePair<int, Individual> kvpInd in _Individuals1)
        {
            tempSimilarFilesToFile1 = new HashSet<Individual>();
            foreach (KeyValuePair<int, Individual> kvpInd2 in _Individuals2)
            {
                if (kvpInd.Value.name.name.ToLower() == kvpInd2.Value.name.name.ToLower())
                {
                    Counter++;
                    similarInds.Add(kvpInd.Value);
                    if (Counter >= 1)
                    {
                        tempSimilarFilesToFile1.Add(kvpInd2.Value);
                    }
                }
            }
        lstIndividuals2.DataSource = tempSimilarFilesToFile1.ToList();
        lstIndividuals2.DisplayMember = "DisplayName";
        lstIndividuals2.ValueMember = "id";
   }

正如您可能看到的,lstIndividuals2列表框项目的缩放速度非常快。我只想点击lstIndividuals 中的一个项目

然后我想显示找到的类似记录(任何遵守规则kvpInd.value.name.name == kvpInd2.value.name.name的记录)

所有类似的项目,我希望存储在tempSimilarFilesToFile1中,并作为lstIndividual2 的数据源

如果我解释得不好,我道歉。

谢谢。

单击列表对象并在另一个列表框C#中显示其他多个列表对象

每次都在外循环中初始化tempSimilarFilesToFile1,因此实际上会得到一个包含_Individuals2中的项目的列表,这些项目与_Individuals1中的最后一个项目相同。试着在外循环中注释init语句,看看这是否有帮助。

private void lstIndividuals_SelectedIndexChanged(object sender, EventArgs e)    
{
    var individual = lstIndividuals.SelectedItem as Individual;
    var tempSimilarFilesToFile1 = new HashSet<Individual>();
    int Counter = 0;
    foreach (KeyValuePair<int, Individual> kvpInd in _Individuals1)
    {
        // comment the statement below
        //tempSimilarFilesToFile1 = new HashSet<Individual>();
        foreach (KeyValuePair<int, Individual> kvpInd2 in _Individuals2)
        {
            if (kvpInd.Value.name.name.ToLower() == kvpInd2.Value.name.name.ToLower())
            {
                Counter++;
                similarInds.Add(kvpInd.Value);
                if (Counter >= 1)
                {
                    tempSimilarFilesToFile1.Add(kvpInd2.Value);
                }
            }
        }
    lstIndividuals2.DataSource = tempSimilarFilesToFile1.ToList();
    lstIndividuals2.DisplayMember = "DisplayName";
    lstIndividuals2.ValueMember = "id";
}