C# 返回字典中的差异

C# 返回字典中的差异,c#,list,return,C#,List,Return,我正在尝试比较字典的值,并像这样显示结果 字段的字段值不匹配:预期值:001实际值:002 字段值与字段不匹配:预期值:003实际值:002 我能够得到字典中每一行的差异,但我不确定如何在字符串列表中显示结果 这就是我所尝试的 public static string ValidateMvpFields(string value1, Dictionary<string, ValueMap> value2) { var xmlDoc = new

我正在尝试比较字典的值,并像这样显示结果

字段的字段值不匹配:预期值:001实际值:002

字段值与字段不匹配:预期值:003实际值:002

我能够得到字典中每一行的差异,但我不确定如何在字符串列表中显示结果

这就是我所尝试的

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