C# 返回字典中的差异
我正在尝试比较字典的值,并像这样显示结果 字段的字段值不匹配:预期值:001实际值:002 字段值与字段不匹配:预期值:003实际值:002 我能够得到字典中每一行的差异,但我不确定如何在字符串列表中显示结果 这就是我所尝试的C# 返回字典中的差异,c#,list,return,C#,List,Return,我正在尝试比较字典的值,并像这样显示结果 字段的字段值不匹配:预期值:001实际值:002 字段值与字段不匹配:预期值:003实际值:002 我能够得到字典中每一行的差异,但我不确定如何在字符串列表中显示结果 这就是我所尝试的 public static string ValidateMvpFields(string value1, Dictionary<string, ValueMap> value2) { var xmlDoc = new
public static string ValidateMvpFields(string value1, Dictionary<string, ValueMap> value2)
{
var xmlDoc = new XmlDocument();
xmlDoc.LoadXml(value1);
foreach (var item in value2.Keys)
{
try
{
var Val1 = xmlDoc.SelectSingleNode(responseParameters[item].XPath).InnerText;
var Val2 = responseParameters[item].Value;
if (!Val1.Trim().Equals(Val2.Trim()))
{
var results = ErrorMessage = $"Mvp Field Values Mismatch For Field: {item} Expected:{Val1} Actual:{Val2}";
string result = null;
result += String.Join(Environment.NewLine, results);
}
continue;
}
catch (Exception ex)
{
var results = ErrorMessage = $"Invalid Xpath: {value2[item].XPath} For Field:{item} Error:{ex.Message}";
/*return results*/
;
}
}
return "";
}
公共静态字符串验证EMVPFields(字符串值1,字典值2)
{
var xmlDoc=新的XmlDocument();
LoadXml(value1);
foreach(value2.Keys中的var项)
{
尝试
{
var Val1=xmlDoc.SelectSingleNode(responseParameters[item].XPath);
var Val2=响应参数[item]。值;
如果(!Val1.Trim().Equals(Val2.Trim()))
{
var results=ErrorMessage=$“字段{item}的Mvp字段值不匹配预期:{Val1}实际:{Val2}”;
字符串结果=null;
result+=String.Join(Environment.NewLine,results);
}
持续
}
捕获(例外情况除外)
{
var results=ErrorMessage=$“无效的Xpath:{value2[item].Xpath}字段:{item}错误:{ex.Message}”;
/*返回结果*/
;
}
}
返回“”;
}
这是我的字典的一个例子
public static Dictionary<string, ValueMap> Example = new Dictionary<string, ValueMap>
{
{"Example1", new ValueMap { XPath = "", Value = "5123"} },
{"Example2", new ValueMap { XPath ="", Value = "123"} },
}
公共静态字典示例=新字典
{
{“Example1”,新的ValueMap{XPath=”“,Value=“5123”},
{“Example2”,新的ValueMap{XPath=”“,Value=“123”},
}
不要在for循环内部初始化string result=null
,而是在for循环外部初始化StringBuilder
,并将每个结果附加到它
每次初始化string result=null
everytime都会创建新的字符串变量,并且在for循环内部迭代时无法获得以前存储的结果
public static string ValidateMvpFields(string value1, Dictionary<string, ValueMap> value2)
{
var xmlDoc = new XmlDocument();
xmlDoc.LoadXml(value1);
StringBuilder sb = new StringBuilder(); //Initialize StringBuider
foreach (var item in value2.Keys)
{
try
{
var Val1 = xmlDoc.SelectSingleNode(responseParameters[item].XPath).InnerText;
var Val2 = responseParameters[item].Value;
if (!Val1.Trim().Equals(Val2.Trim()))
{
var results = ErrorMessage = $"Mvp Field Values Mismatch For Field: {item} Expected:{Val1} Actual:{Val2}";
//Append new value every time into string builder
sb.Append(Environment.NewLine);
sb.Append(results);
}
continue;
}
catch (Exception ex)
{
var results = ErrorMessage = $"Invalid Xpath: {value2[item].XPath} For Field:{item} Error:{ex.Message}";
/*return results*/
;
}
}
return "";
}
嗨,Mayi007,这有什么更新吗?我用你的建议修改了我的代码,它可以工作了。谢谢:)我很高兴我的解决方案对你有效,干杯
List<string> results = new List<string>(); //Initialize list
……
results.Add(result); //Add new value to it