gpt4 book ai didi

c# - 从列表而不是整个索引中删除对象属性

转载 作者:行者123 更新时间:2023-11-30 18:16:05 25 4
gpt4 key购买 nike

正在搜索这个答案,但没有找到任何答案。

有没有办法从列表的特定索引中只删除一个属性?有可能吗?

所以如果我有一个列表:

List<Person> people = new List<Person>();

哪里:

public class Person
{
#region Public Properties

public string Name { get; set; }
public string Age { get; set; }

#endregion
}

假设我们有三个索引,每个索引都包含 x 个属性:

  1. 姓名:“鲍勃”年龄:21
  2. 姓名:'Sarah',19 岁
  3. 姓名:“玛丽”,29 岁

是否可以删除姓名“Sarah”但不能删除年龄“19”?

我试图这样做,但没有任何运气,因为它删除了整个索引,而不仅仅是名称:

people.RemoveAll(p => p.Name == "Sarah")

最佳答案

Is it possible to delete, for example name 'Sarah' but not the age which is '19'?

没有使用您发布的代码,它不是。值 "Sarah"19 是内在绑定(bind)的,因为它们都被声明为 Person 类的成员。 Person 的任何实例都将始终具有其 NameAge 属性的值。

根据您实际尝试做的事情(您的问题相当模糊),您可能会发现仅设置 Name 属性 null 很有用。然后其他代码可以使用 null 值来指示“此属性不存在”。该属性(property)实际上仍将存在,并将具有值(value)。但该值将为 null,因此您的其余代码可以在此基础上忽略它,就好像它不存在一样。

解决该问题的另一种方法是存储没有预先声明的属性集的对象。例如,您可以将数据存储为字典。坦率地说,这是不可取的,因为您将失去静态(编译时)类型安全和属性命名的所有优势。但这是可以完成的。它看起来像这样:

List<Dictionary<string, object>> people = new List<Dictionary<string, object>>()
{
new Dictionary<string, object>
{
{ "Name", "Bob" },
{ "Age", 21}
},
new Dictionary<string, object>
{
{ "Name", "Sarah" },
{ "Age", 19 }
},
new Dictionary<string, object>
{
{ "Name", "Mary" },
{ "Age", 29 }
},
};

然后,如果您有一个特定的索引,您希望从中删除姓名而不是年龄:

int index = ...;

people[index].RemoveKey("Name");

关于c# - 从列表而不是整个索引中删除对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47117290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com