首页 > 解决方案 > 从对象列表中过滤掉一些属性

问题描述

MyObject我有一个包含 10 个属性的对象列表 ( )。

Class MyObject{
   string F1,
    string F2,
   ....
   string F10
}

 var myList = new List<MyObject> ()

我必须从该 mylist 中过滤掉一些属性并根据字符串列表中提供的输入获取所选项目的新列表。

var requiredFlields = new List<String> {"F1", "F2"}

我知道这个 :

var o1 = myList.Select(a => new {  a.F1, a.F2 }).ToList();

但它不允许我使用 requiredFields 列表进行过滤。

有没有办法做到这一点?

标签: c#listoopcollectionsfilter

解决方案


您可以使用函数从类中获取属性详细信息。使用GetProperties()它来获取所有属性的详细信息。

遍历每个属性并检查该属性的名称是否存在于类中。

示例代码:

PropertyInf[] propertiesInfo = MyObject.GetType().GetProperties();
foreach(PropertyInfo item in propertiesInfo)
{
    if(requiredFields.Contains(item.Name))
        {
            //Do your operation here
        }
}

在您的帮助下,PropertyInfo您可以检查属性名称、属性类型、GetSetMethod()

更多细节:PropertyInfo 类


推荐阅读