C# 如何删除字符串数组结果直到结果为零?

C# 如何删除字符串数组结果直到结果为零?,c#,C#,我有一个表单Form1,其中包含一个数组: string [] lines = value2.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); 其中value2是如下所示的文本文档: x y z 然后,我有另一个表单Form2,它将一个数组随机收集到一个字符串=>person。 此表单还有一个返回按钮,可返回到Form1。 Person是一个公共静态字符串 我试图找到一种方法,当您返回到Form1时,您

我有一个表单
Form1
,其中包含一个数组:

string [] lines = value2.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
其中value2是如下所示的文本文档:

x
y
z
然后,我有另一个表单
Form2
,它将一个数组随机收集到一个字符串=>
person
。 此表单还有一个返回按钮,可返回到
Form1
。 Person是一个
公共静态字符串

我试图找到一种方法,当您返回到
Form1
时,您不能再次使用相同的随机值
person


我试过:
lines=lines.Where(s=>s!=person.ToArray()在提交至
表单2上单击。但这似乎不起作用


表格2

表格1
: 你的密码是什么

lines = lines.Where(s => s != person).ToArray();
。。。实际上是有效的

现在,如果它不工作,这意味着字符串
person
数组中的任何项都不匹配。可能会有额外的空格,或者更可能的是,大写字母不一样

请注意,如果
person
“X”
,而行是
{“X”、“y”、“X”}
,则您的代码将与
行中的任何项目都不匹配

尝试使资本化正常化:

lines = lines.Where(s => s.ToLower() != person.ToLower()).ToArray();
最后,请注意,如果您正在读取的文件末尾有一个换行符,那么您将在lines数组中得到一个空条目。然后,如果将该空字符串分配给
person
,则该代码自然不会与数组中的任何内容匹配,也不会删除任何项目

要避免这种情况,请在执行
string.Split()时使用
StringSplitOptions.removeMptyEntries


您可能希望将其放入一个更有用的数据结构(如堆栈或队列)中,然后从中删除。
person
直接来自数组。不可能不匹配。而且我在2天前开始学习c#。你能给我解释一下s是什么吗?好的,我建议编辑你的问题,然后发布代码,我们会进一步了解。通过您发布的内容,以上是我能想到的提供
s
的最详细的信息?在
中,其中(s=>s.ToLower()…)
——这是一个
Lambda表达式
<当
Where()
表达式在
array
中循环时,code>s
是为
行的每一项指定的别名。问题是,每次用户按下按钮1时,都会读取新文件,并从该文件重新生成整个数组。您的代码永远不会发生这种情况。您需要读取一次文件,然后分别连接按钮。我建议对此提出一个新问题,但首先试着自己去做。
lines = lines.Where(s => s != person).ToArray();
lines = lines.Where(s => s.ToLower() != person.ToLower()).ToArray();
lines = value.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);