【问题标题】:Delete object single property from list从列表中删除对象单个属性
【发布时间】:2017-11-05 20:10:07
【问题描述】:

我想从列表中删除对象单个属性。我有课,

Public class Employee
{
 public int Id {get;set;} 
 public string Name {get;set;}
 public string Address {get;set;}
}

我有清单,

List<Employee> lstEmployee = new List<Employee>();

认为它具有类似的价值,

lstEmployee[0] = { Id = 0 , Name = "A" , Address = "ABC" }
lstEmployee[1] = { Id = 0 , Name = "B" , Address = "XYZ" }
lstEmployee[2] = { Id = 0 , Name = "C" , Address = "PQR" }

我想删除属性Id,其余记录将保持原样。

lstEmployee[0] = { Name = "A" , Address = "ABC" }
lstEmployee[1] = { Name = "B" , Address = "XYZ" }
lstEmployee[2] = { Name = "C" , Address = "PQR" }

有可能实现吗? (任何其他或替代方式)

【问题讨论】:

  • 否...创建另一个没有 id 的对象并复制
  • 你可以返回没有ID字段的列表,这是你想要的吗?它需要你创建一个匿名类型...
  • 你想改变类的结构吗?或者只是从对象中删除一个值?
  • XY problem的一个很好的例子
  • @RiteshKumarJaiswal 你看过关于 abot xy 问题的评论了吗?

标签: c# linq


【解决方案1】:

这无法完成,因为一旦设置了类定义,就可以了。

您可以做的最好的事情是检索仅包含 NameAddress 的数组 对象中包含的属性是使用LINQ 对每个元素执行操作,在这种情况下,您可以检索一个匿名类型数组,精确指定您想要的属性。

示例:

var result = (from e in lstEmployee
              select new { e.Name, e.Address }).ToArray();

【讨论】:

  • 你能分享任何例子吗
  • 我可以使上面的代码通用吗?一个返回匿名类型列表的通用方法
  • 其实我在网上没有得到任何帮助
  • @RiteshKumarJaiswal 将逻辑放入方法并返回结果的一种方法是使方法返回类型为dynamic,但出于多种原因我不推荐这样做。所以花点时间重新考虑你的整个方法。出于好奇,为什么需要删除对象属性?
  • 实际上我有一个无法更改的现有逻辑(通过将列表作为输入来呈现 excel),如果我传递一个具有 Id 0 的列表,它甚至会呈现Id 列。我的要求是不要渲染 Id 因为它是 0。所以我想在将它传递给现有方法之前,我将从列表对象中删除 Id 属性
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多