我要做的是将内置于字典中的测试数据集与学习数据集进行比较,该数据集也内置于字典中。我已经尝试了很多方法,我要么在所有检查中得到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);
}
}
答案 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()
};
这是值中每个字符串每次出现次数的列表。