找到一个对象的属性并获取其值 - C#

时间:2014-11-29 12:50:54

标签: c#

说有一个像

这样的课程
class phones
{
    public int Id {get; set;}
    public string Name {get; set;}
    public string Color {get; set;}
    public decimal Price {get; set;}
}
List<phones> myList = GetData();
//list is filled with objects

现在,我知道对象属性的Id和确切名称,并希望从匹配对象中获取值。

private string GetValue(int pid, string featurename)
{
  string val = "";
 foreach(phones obj in myList)
  {
   if(obj.Id == pid)
    {
      //if featurename is 'Name', it should be
      //val = obj.Name;

      //if featurename is 'Price', it should return
      //val = obj.Price;
      break;
    }
  }
  return val;
}

这可能吗?请指教。

3 个答案:

答案 0 :(得分:1)

这个怎么样:

 foreach(phones obj in myList)
  {
   if(obj.Id == pid)
    {
      if (featurename == "Name")
      {
         return obj.Name;
      }
      else if (featurename == "Price")
      {
         return obj.Price.ToString();
      }
      else
      {
         return string.Empty;
      }
    }
  }

答案 1 :(得分:1)

我认为您希望Property具有给定的featurename并使用它 你可以使用像this

这样的lambda表达式

像这样使用PropertyInfo

foreach (PropertyInfo p in typeof(ClassName).GetProperties())
{
    string propertyName = p.Name;
    //....
}

答案 2 :(得分:1)

使用此:

 Phones phones= new Phones();          
 string returnValue = phones.GetType().GetProperty(featureName).GetValue(phones, null).ToString();

另外,请记住为输入featureName和错误处理添加验证。