【问题标题】:Remove list items' property from list in c#从 C# 中的列表中删除列表项的属性
【发布时间】:2022-01-12 09:41:39
【问题描述】:

我有一个这样的列表,我正在创建一个包含以下数据的 csv 文件,并且我想排除一些列,属性是列名

[
 {name: john, age: 25},
 {name: mark, age: 30},
]

我想在没有任何条件的情况下从列表项中删除年龄属性,只需删除该属性,所以我的新列表应如下所示,它将被排除在 csv 文件中

[
 {name: john},
 {name: mark},
]

【问题讨论】:

  • .Select(t => new {t.name})?
  • Removing 表示您要删除或隐藏该属性?
  • 它会起作用,但我在一个项目中有 30 多个属性,我不想像这样手动创建项目,有更好的解决方案吗?
  • 我要删除 Aslam
  • 看起来像 XY 问题。为什么要删除属性?你能添加你现有的代码吗?

标签: c# .net linq


【解决方案1】:

这可能会对您有所帮助:

  List<Employee> listEmployee= new List<Employee>([
     {name: john, age: 25},
     {name: mark, age: 30},
    ])
    var reduceAgeFromList= listEmployee.Select(e => new {e.name}).ToList();

这种方式也对你有帮助,

   public class Employee
    {
        public string name{ get; set; }
    
        [SkipProperty]
        public string age{ get; set; }
    }
    
 List<Employee> employee= new List<Employee>([
     {name: john, age: 25},
     {name: mark, age: 30},
 ])
  var employee.Where(pi => pi.GetCustomAttributes(typeof(SkipPropertyAttribute), true).Length == 0).ToArray();

【讨论】:

  • 它可以工作,但我在一个项目中有 30 多个属性,我不想像这样手动创建项目,有更好的解决方案吗?
  • 我觉得 .Select 方式简单易用,使用 Automapper 和 class 也可以帮助您解决问题。访问:github.com/AutoMapper/AutoMapper/blob/master/docs/…
【解决方案2】:

有两种方法可用于获取列表中的数据。我们可以使用 lambda 表达式(或)使用 linq 进行查询。

使用 linq;

  1)  List<details> list= new List<details>()

      var name = list.Where(a => a.name).ToList();  // fetch the data of 
       particular property


  2) var name = from c in list
                 where c.name
                 select c;

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多