2016-01-02 52 views
1

枚舉填充類實例Ive得到了一個通用的List<Person> PersonList包含人使用LINQ

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循環做。 這樣做的最好方法是什麼?

謝謝!

+0

我想的foreach與嵌套的if。 – Uninvited

+0

此外,我試圖從LINQ和地方的foreach,但我是新來的LINQ和我不能找到一個解決方案 – Uninvited

+1

將它添加到這個問題 – dotctor

回答

0

您可以在枚舉過濾由名PersonList

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

Enum.GetNames會給你你在你的枚舉例如定義名稱

Enum.GetNames(typeof(SortednamesA)會給你下面的數組["george", "jack", "etc"]

+0

非常漂亮和優雅。謝謝。 – Uninvited

+1

雖然是一個微型優化,但它會爲枚舉的每次迭代冗餘地調用Enum.GetNames。您可以在LINQ查詢之前將它作爲語句來保存開銷 –