c# - 从对象列表中过滤掉一些属性
问题描述
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 列表进行过滤。
有没有办法做到这一点?
解决方案
您可以使用函数从类中获取属性详细信息。使用GetProperties()
它来获取所有属性的详细信息。
遍历每个属性并检查该属性的名称是否存在于类中。
示例代码:
PropertyInf[] propertiesInfo = MyObject.GetType().GetProperties();
foreach(PropertyInfo item in propertiesInfo)
{
if(requiredFields.Contains(item.Name))
{
//Do your operation here
}
}
在您的帮助下,PropertyInfo
您可以检查属性名称、属性类型、GetSetMethod()
更多细节:PropertyInfo 类
推荐阅读
- view - 插入 Hive 中的视图
- azure - 服务结构是否适合下载和压缩
- c# - 如何反序列化 GZipStream?
- c - 用C编程,如何声明未知大小的数组以供以后使用?
- python - Flask-Cache 不断丢失实例方法的缓存
- jquery - 无法使用 Jquery 清除选择选项值
- objective-c - 如何获取(段偏移)每个不同的平面(IODeviceTree,IOService ....)进行转储?
- python - 如何将不同形状的np数组组合在一起并按行分隔
- hex - 在汇编语言 NASM 中将十进制转换为十六进制
- node.js - 如何在子进程nodejs中访问父全局变量