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

时间:2016-01-02 12:59:25

标签: c# .net linq enums generic-list

我有一个包含人物的通用List<Person> PersonList

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

我有一种方法可以收回收入。

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循环以最少的努力做到这一点。 做这个的最好方式是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以按枚举

中的名称过滤PersonList
var a = PersonList.Where(x=> Enum.GetNames(typeof(SortednamesA)).Contains(x.name))

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

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