关于以下代码的简短问题。 为什么它总是显示0?
List<string> strList = new List<string>() { "Yes", "No", "Yes", "No", "Yes", "Yes"};
int hitCount = 0;
strList.Select(i =>
{
if(i.Equals("Yes"))
{
hitCount++;
}
return i;
});
Console.WriteLine(hitCount); // always returns 0.
Console.Read();
答案 0 :(得分:3)
基本上在你的情况下查询没有运行,它只是一个简单的Select
和retrun
,要么你必须在查询结束时添加ToList()
来实际运行查询,要么你可以执行其他操作以运行值为Yes
的项目。在这种情况下,使用Count
要快得多。
int hitcount = strList.Count(p => p == "Yes");
或者使用可以使用Where
子句和Count
hitcount = strList.Where(p => p == "Yes").Count();
答案 1 :(得分:1)
如果您调用:
,则Select语句仅创建查询result.ToList();
它将强制查询枚举,并且计数器将被更新。