如何根据C#中的输入值来抑制List项?

时间:2011-11-17 10:53:04

标签: c# asp.net

我有一个具有一组属性的类,如下所示。

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)的方法,它根据参数字段将字符串字段名称作为参数,如下面的“FirstName,LastName,Title”,我的方法应该只返回带有

的列表
<CustomerInfo>
<FirstName></FirstName>
<LastName></LastName>
<Title></Title>
</CustomerInfo>

我怎样才能在c#中做到这一点?

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

请做好必要的事。

1 个答案:

答案 0 :(得分: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;