我有两个字符串数组,问题是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();
}
}
答案 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",通常会让人皱眉)