我有一个包含固定值的字符串数组和一个动态更改文本的richtextbox。 richtextbox中的某些行以字符串数组中的值开头。我想只选择richtextbox中不以字符串数组中的值开头的行。 以下代码返回richtextbox中的所有行。
string[] parts = new string[] { "Definition:", "derivation:", "derivations:"};
IEnumerable<string> lines = richTextBox1.Lines.Where(
c =>parts.Any(b=>!c.StartsWith(b)));
我的问题是:如何只选择不以字符串数组中的值开头的richtextbox的行?
答案 0 :(得分:8)
将Any
更改为All
。正如它所写,它返回所有行,因为一行不能以多个单词开头。
您当前的代码说,“如果部分中的任何单词不是该行的第一个单词,则返回true。”显然,该行不能以“foo”和“derivation:”开头。所以你永远都会成真。
你想说,“如果部分中的所有单词都不是该行的第一个单词,则返回true。”
另一种方法是:
lines = richTextBox1.Lines.Where(c => !parts.Any(b => c.StartsWith(b)));
这可能是我写的。
答案 1 :(得分:3)
您将(!)运算符放在错误的位置。如果您想使用Any
,那么
string[] parts = new string[] { "Definition:", "derivation:", "derivations:"};
IEnumerable<string> lines = richTextBox1.Lines.Where(
c => !parts.Any(b => c.StartsWith(b)));