使用 LINQ 的 C# 字符串子数组

C# subarray of strings with LINQ

我有一个字符串数组,我必须只取那些条目, 以“81”或“82”开头。我试过这样:

var lines = File.ReadAllLines(fileName); // This returns an array of strings
lines = lines.TakeWhile(item => item.StartsWith("81") ||item.StartsWith("82")).ToArray();

但这根本行不通。它返回一个空字符串数组。

当我使用 for 循环遍历行并每次进行比较时

if (!firstline.Substring(0, 2).StartsWith("81")) continue;

然后我输入了所需的条目,一切正常。

关于如何正确使用 LINQ 的任何建议?

您需要使用Where():

lines = lines.Where(item => item.StartsWith("81") || item.StartsWith("82")).ToArray();

TakeWhile 将进行排序,直到条件变为假,但 Where 将继续并找到与条件匹配的所有元素。