如何计算字典中相等值的数量c#

时间:2015-09-29 17:57:44

标签: c# dictionary compare

我要做的是将内置于字典中的测试数据集与学习数据集进行比较,该数据集也内置于字典中。我已经尝试了很多方法,我要么在所有检查中得到0,要么我得到的答案是不可能的(我认为它在计算测试集中的所有内容),而不是它应该做的样子, (我一直在考虑)重置训练集中每个键/值对之后的计数。

这是一个代码的例子。帮助

 public static void theTestingAlgorithm()
    {
        foreach (var testrecipe in Testing.sortedTestingData)
        {
            Dictionary<string, int> runningNumbers = new Dictionary<string, int>();
            foreach(var learningRecipe in MakeData.SortedData)
            {
                runningNumbers.Add(learningRecipe.Key, 0);
            }                
            foreach(var testIngredient in testrecipe.Value)
            {
                foreach(var learningRecipe in MakeData.SortedData)
                {
                    if (learningRecipe.Value.Contains<string>(testIngredient))
                    {
                        runningNumbers[learningRecipe.Key]++;
                    }
                }
            }       
            string answer = evaluatetest(runningNumbers);
            runningNumbers.Clear();
            Answers.Add(testrecipe.Key, answer);
        }
    }

1 个答案:

答案 0 :(得分:0)

看起来您正试图弄清楚所有测试配方中出现的成分的次数。我不认为您想在foreach中创建runningNumbers

这是一个linq表达式,可以让你更接近你正在寻找的......

        Dictionary<string, string[]> SortedTestingData = new Dictionary<string, string[]>();
        SortedTestingData.Add("1", new string[] { "a", "b", "c" });
        SortedTestingData.Add("2", new string[] { "d", "b", "e" });
        SortedTestingData.Add("3", new string[] { "d", "b", "f" });
        SortedTestingData.Add("4", new string[] { "a", "b", "c" });

        var runningNumbers = from vals in SortedTestingData
                             from val in vals.Value
                             group val by val into g
                             select new
                             {
                                 Value = g.Key,
                                 Count = g.Count()
                             };

这是值中每个字符串每次出现次数的列表。