带有LINQ的C#字符串子阵列

Fre*_*eud 0 c# linq string startswith sub-array

我有一个字符串数组,我只需要那些以"81"或"82"开头的条目.我试过这样的:

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

但这只是行不通.它返回一个空字符串数组.

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

if (!firstline.Substring(0, 2).StartsWith("81")) continue;
Run Code Online (Sandbox Code Playgroud)

然后我拿了所需的条目,它工作得很好.

有任何建议如何使用LINQ正确吗?

Far*_*yev 8

你需要使用Where():

lines = lines.Where(item => item.StartsWith("81") || item.StartsWith("82")).ToArray();
Run Code Online (Sandbox Code Playgroud)

TakeWhile将采取序列直到条件变为假,但Where 将继续并找到符合条件的所有元素.