C# 如何移除列表项的指定属性以在导出CSV时排除对应列
C# 移除列表对象指定属性的实现方案
根据你使用的对象类型不同,有几种常用的实现方式:
1. 强类型实体类场景
如果你预先定义了包含Name和Age的实体类:
public class Person { public string Name { get; set; } public int Age { get; set; } }
直接用LINQ的Select方法投影为仅包含Name的对象即可,推荐用匿名类,不需要额外定义新类型:
// 原始数据 List<Person> originalList = new List<Person> { new Person { Name = "john", Age = 25 }, new Person { Name = "mark", Age = 30 } }; // 处理后的列表,仅保留Name属性 var processedList = originalList.Select(p => new { p.Name }).ToList();
把processedList拿去生成CSV时,自然不会生成Age列。
2. 动态类型ExpandoObject场景
如果你的列表元素是动态的ExpandoObject类型,可以直接删除对应的属性键:
// 假设originalList是你已有的动态列表 List<ExpandoObject> originalList = new List<ExpandoObject>(); foreach (dynamic item in originalList) { var dict = (IDictionary<string, object>)item; // 存在age属性就删除 if (dict.ContainsKey("age")) { dict.Remove("age"); } }
3. JObject操作场景(Newtonsoft.Json)
如果你是从JSON反序列化得到的JArray/JObject集合,直接调用Remove方法删除属性即可:
// 原始JSON数组解析示例 JArray originalArray = JArray.Parse(@"[ {""name"": ""john"", ""age"": 25}, {""name"": ""mark"", ""age"": 30} ]"); foreach (JObject item in originalArray) { item.Remove("age"); }
内容的提问来源于stack exchange,提问作者Mr. Das
相关产品推荐
相关产品推荐

