使用 linq 通过枚举填充 class 实例

Populate class instance by enum using linq

我有一个通用的 List<Person> PersonList,其中包含 Persons

class Person 
{
    public string name  {get ; set;} 
    public string lastName  {get ; set;}
    public decimal income  {get ; set;} 
}

我有一个returns收入的方法。

decimal GetPersonIncome(string name) 

我有包含我要过滤的名称的枚举:

enum SortednamesA
{
    george,
    jack,
    etc
}

enum SortednamesB
{
    bill,
    john,
    etc
}

我想根据每个枚举的名称创建 SortedPersonsIncome 个实例。

Class SortedPersonsIncome 
{
    public SortedPerdons(string customListname, 
    decimal sortedPersonIncomeA,            
    decimal sortedPersonIncomeB)  
}

所以它会像这样:

SortedPersonsIncome sortedA = new SortedPersonsIncome(
"newSortedPerson",
GetPersonIncome(georgeFromEnumA), 
GetPersonIncome(jackFromEnumA))

我想使用 linq 或 foreach 循环以最省力的方式做到这一点。 做这个的最好方式是什么?

谢谢!

您可以按枚举中的名称过滤PersonList

var a = PersonList.Where(x=> Enum.GetNames(typeof(SortednamesA)).Contains(x.name))

Enum.GetNames 将为您提供您在枚举中定义的名称,例如

Enum.GetNames(typeof(SortednamesA) 将为您提供以下数组 ["george", "jack", "etc"]