2011-11-17 52 views
2

我有一組屬性,如下所示。如何根據C#中的輸入值抑制列表項目?

class CustomerInfo 
{ 
    public string Address { get; set; } 
    public string FirstName{ get; set; } 
    public string LastName{ get; set; } 
    public string PostCode{ get; set; } 
    public string Title{ get; set; } 
    public string Email{ get; set; } 
} 

我有一個方法叫getinfo(string Fields)內搭串字段名像下面,基於參數「名字,姓氏,標題」參數字段我的方法應該

<CustomerInfo> 
<FirstName></FirstName> 
<LastName></LastName> 
<Title></Title> 
</CustomerInfo> 

如何只返回列表我可以在c#中執行此操作嗎?

Public List<CustomerInfo> getinfo(string Fields) 
{ 
List<CustomerInfo> list = new List<CustomerInfo>(); 
……. 
return list; 
} 

請做必要的事。

+0

有些困難(如果你想以可維護的方式來做)。如果它是可維護的,則爲 – Oliver

+0

。那麼它很好。 – user995099

+0

+1,爲好問題。 –

回答

2

你可以像這樣做反射。我沒有試圖編譯這個,但它應該非常接近。

List<CustomerInfo> inList = new List<CustomerInfo>(); 
List<CustomerInfo> outList = new List<CustomerInfo>(); 

string[] properties = string.split(','); 
foreach(var info in inList) 
{ 
    CustomerInfo filteredInfo = new CustomerInfo(); 
    foreach(var property in properties) 
    { 
     var pi = typeof(CustomerInfo).GetProperty(property); 
     pi.SetValue(filteredInfo, pi.GetValue(info, null), null); 
    } 
    outList.Add(filteredInfo); 
} 

return outList; 
+0

的屬性名稱此解決方案非常感謝您的工作 – user995099

相關問題