Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Linq统计列表中的枚举值数_C#_Linq_List - Fatal编程技术网

C# 使用Linq统计列表中的枚举值数

C# 使用Linq统计列表中的枚举值数,c#,linq,list,C#,Linq,List,我有这样一个枚举: public enum PlayResultEnum { First, Cooperate, Defect } 我创建了以下内容的列表: public List<PlayResultEnum> Agent1Result=new List<PlayResultEnum>(); public List<PlayResultEnum> Agent2Result=new List<PlayResultEnum>

我有这样一个枚举:

public enum PlayResultEnum
{
    First, Cooperate, Defect
}
我创建了以下内容的列表:

    public List<PlayResultEnum> Agent1Result=new List<PlayResultEnum>();
    public List<PlayResultEnum> Agent2Result=new List<PlayResultEnum>();
public List Agent1Result=new List();
public List Agent2Result=新列表();
例如,我需要使用lambda(Linq)计算列表中的First

我该怎么做

var count = Agent1Result.Count(c => c == PlayResultEnum.First);
或者另一种方式:

var count = Agent1Result.Count(c => (int)c == 0);
如果您的
PlayResultEnum.First
是第一个值,并且您没有手动设置另一个值,则它将起作用。从

默认情况下,第一个枚举数的值为0,每个后续枚举数的值增加1


你问什么还不完全清楚

如果您想知道列表中的项目数,不需要linq,只需执行以下操作:

var count = Agent1Result.Count;
如果您想知道特定类型列表中的项目数,请执行以下操作:

var count = Agent1Resut.Count(x => x == PlaEnumResult.First);

要获取所有事件,请执行以下操作:

Dictionary<PlayResultEnum, int> countResults 
           = Agent1Result.GroupBy(x => x)
                         .ToDictionary(x => x.Key, y => y.Value.Count);
Console.WriteLine(countResults[PlayResultEnum.First]);