0

私は答えに近づいていますが、迷惑なことに、完全ではありません。これまでのところ、私のコードは次のとおりです。

   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

説明が下手でしたら申し訳ありません。

ありがとうございました。

4

1 に答える 1

0

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";
}
于 2012-04-05T05:46:32.927 に答える