防止从数组c#

时间:2019-01-25 06:21:26

标签: c# arrays

我有两个字符串数组,问题是resvalues包含一个pk字符串两次。即使循环只运行一次,resvalues的两个条目都被删除。

      for (int i = 0; i < pk.Length; i++)
        {
            if (columnname[i] == pk[i])
            {
                columnname = columnname.Where(w => w != columnname[i]).ToArray();
                resvalues = resvalues.Where(w => w != resvalues[i]).ToArray();
            }
        }

2 个答案:

答案 0 :(得分:0)

此行:每当您的if子句中有匹配项时,就会执行resvalues = resvalues.Where(w => w != resvalues[i]).ToArray();

因此,即使匹配仅发生一次(我想),执行的代码也会找到并将这些项移动到不同于w的重新值。这就是为什么两个值都被删除的原因。

答案 1 :(得分:0)

如果columnname中的值和resvalues中的值需要保持“同步”,则强烈建议您将这些值分组为 object 并使用这些对象的单个集合/数组代替。

例如如果它们都是string,则引入一个新的class

public class ColumnAndRes {
    public string ColumnName {get;set;}
    public string ResValue {get;set;}
}

(这是一个比较贫乏的课程,您绝对可以做得更好,使这个更好)。

然后,但是,当前您正在填充列名和值,而是创建上述类的新实例并存储它们。

(您当前正在做的事情有时被称为“面向数组的程序设计”或"Parallel Collections",通常会让人皱眉)