如何通过谓词对枚举列表进行计数?

Sha*_*ani 1 c# linq enums

我有一个清单:

var foos = new List<E_Foo>() { E_Foo.FooA, E_Foo.FooB , ... };
Run Code Online (Sandbox Code Playgroud)

哪里E_Foo

public enum E_Foo
{
    Undefined = 0,
    FooA = 1,
    FooB = 2
}
Run Code Online (Sandbox Code Playgroud)

我需要计算特定枚举值的出现次数,例如:

int fooACount = foos.Count(x => x.GetType() == E_Foo.FooA);
Run Code Online (Sandbox Code Playgroud)

但它显示编译器错误:

运算符“==”不能应用于“Type”和“E_Foo”类型的操作数

spz*_*tbg 5

您需要按值而不是类型来比较它们

foos.Count(x => x == E_Foo.FooA)
Run Code Online (Sandbox Code Playgroud)

  • 只是为了支持您的答案,这里是小提琴:https://dotnetfiddle.net/HWcdaB (2认同)