0

我有一个具有固定值的字符串数组和一个动态更改文本的富文本框。Richtextbox 中的某些行以字符串数组中的值开头。我只想选择不以字符串数组中的值开头的富文本框的行。以下代码返回富文本框中的所有行。

string[] parts = new string[] { "Definition:", "derivation:", "derivations:"};
IEnumerable<string> lines = richTextBox1.Lines.Where(
c =>parts.Any(b=>!c.StartsWith(b)));

我的问题是:如何仅选择不以字符串数组中的值开头的richtextbox 行?

4

2 回答 2

8

更改AnyAll。正如它所写的那样,它返回所有行,因为一行不能以多个单词开头。

您当前的代码说,“如果部分中的任何单词不是该行的第一个单词,则返回 true。” 显然,该行不能以“foo”和“derivation:”开头。所以你总是得到真实的。

您想说“如果部分中的所有单词都不是该行的第一个单词,则返回 true。”

另一种方法是:

lines = richTextBox1.Lines.Where(c => !parts.Any(b => c.StartsWith(b)));

这可能是我写它的方式。

于 2013-10-17T18:16:50.757 回答
3

您将 (!) 运算符放在错误的位置。如果你想使用Any那么

string[] parts = new string[] { "Definition:", "derivation:", "derivations:"};
IEnumerable<string> lines = richTextBox1.Lines.Where(
                                 c => !parts.Any(b => c.StartsWith(b)));
于 2013-10-17T18:29:32.510 回答