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]);