FindAll搜索问题

Wol*_*lfy 4 c# list findall

我有一个这样的列表:

item.Add("a");
item.Add("as");
item.Add("b");
item.Add("fgs");
item.Add("adsd");
Run Code Online (Sandbox Code Playgroud)

如何查找以(例如)"a"开头的所有项目?

这个"a"不是一些硬编码的字符串,所以我需要一个为每个字符串执行此操作的函数.

我尝试使用FindAll,但我没有弄清楚它是如何工作的.

Br,Wolfy

Jon*_*nna 7

如果用"开头"表示第一个字符,那么:

item.FindAll(i => i[0] == 'a');
Run Code Online (Sandbox Code Playgroud)

如果你的意思是一个字符串(可能不是1个字符),那么:

item.FindAll(i => i.StartsWith("a"));
Run Code Online (Sandbox Code Playgroud)

如果您想要不同的比较,例如不区分大小写,基于语言环境等,那么请执行相关的IndexOf,例如:

item.FindAll(i => i.IndexOf("a", StringComparison.CurrentCultureIgnoreCase) == 0);
Run Code Online (Sandbox Code Playgroud)

以上所有内容都可以很容易地使用相关的char或字符串变量或参数.

如果你并不需要通过一个列表提供额外的属性和方法,那么这将是更有效地使用WhereFindAllFindAll创建一个新的列表,并在所有一次这样做,但Where因为它是通过迭代将枚举匹配结果.