我有一个测试框架,需要更新以包含西班牙语测试。我有一个CSV文件,其中包含字段标签,英文文本和西班牙文本。我决定使用字典来存储字段标签作为键,值将是西班牙语和英语文本的字符串列表。
private List<string> ReadTranslationCsv()
{
var pathToCSV = @"C:\Location";
Dictionary<string, List<string>> translations = new Dictionary<string, List<string>>();
string label, englishText, spanishText;
using (TextReader fileReader = File.OpenText(pathToCSV))
{
var csv = new CsvReader(fileReader);
csv.Configuration.HasHeaderRecord = false;
while (csv.Read())
{
for (int i = 0; csv.TryGetField<string>(i, out label);)
{
List<string> Spanglish = new List<string>();
csv.TryGetField<string>(i + 1, out englishText);
Spanglish.Add(englishText);
csv.TryGetField<string>(i + 2, out spanishText);
Spanglish.Add(spanishText);
if (label != "")
{
translations.Add(label, Spanglish);
}
i = i + 3;
}
}
}
}
我希望能够在值列表中进行搜索,以查看是否有任何内容匹配某些文本字符串。我不确定如何搜索字典中的列表,默认方法或属性都不起作用。
我使用下面的代码,但这会给我一个bool,这不是我需要的,我需要与elementWithText匹配的列表值
public void GivenElementMatches(string elementWithText)
{
if (Config.Language == "Spanish")
{
var list = new List<string> { elementWithText };//must create list in order to pass text to any translations methods
Hooks.translations.ContainsValue(list); // Even though the labels are the key, I need to search for the english text which is index 1 of the list and all values should be returned
}
//TODO
}
答案 0 :(得分:0)
我的建议是使用包含您创建的类的Dictionary,在该类中可以使用比较功能。
此方法的优点是您可以稍后添加更多语言等效项,只需更改模型。
请注意,此代码不完整,您必须进行错误检查并更改以适应。
Dictionary <string, LangEquivalents> model;
public KeyValuePair<string, LangEquivalents> findField(string input)
{
return model.First(x=>x.Value.Comparison(input));
}
您也可以将其设为类似的对象类型,然后使用model.First(x=>x.Value == input));