查找列表中特定项目的计数

时间:2012-10-16 09:51:20

标签: c#

我有List<String>,有1000个名字。我想找出以字母“S”开头的名字数。

这样做的最佳选择是什么?

5 个答案:

答案 0 :(得分:7)

如果Linq可用

using System.Linq;
list.Where(s=>s!=null && s.StartsWith("S")).Count();

如果Linq不可用。

int count=0;
foreach (string s in list) {
  if (s!=null && s.StartsWith("S")) count++;
}

答案 1 :(得分:2)

使用linq使这个简单

var count = list.Where(x => x != null && x.StartsWith("S")).Count();

答案 2 :(得分:1)

如果您可以访问LINQ,例如

int count = myList.Count(name => name.StartsWith("S"));

否则,像是

int count = myList.FindAll(name => name.StartsWith("S")).Count;

(编辑:正如Bob Vale在答案中指出的,如果您的任何列表条目可能为空,则需要添加空检查,例如name => name != null && name.StartsWith("S")。)

答案 3 :(得分:1)

int num = 0;
foreach (string aName in yourStringList)
{
if (aName.StartsWith("S"))
{
num++
}

和num将具有以“S”开头的名称数

答案 4 :(得分:0)

List<string> list = new List<string>();
...
int count = list.Count(c =>  c!= null && c.StartsWith("S"));