【问题标题】:Update list values after update root class object更新根类对象后更新列表值
【发布时间】:2019-01-11 23:19:24
【问题描述】:

我有以下课程:

public class Class_A
{
    public string my_field { get; set; }
    public int id { get; set; } 
    // etc...
}

public class Class_B
{
    public string my_field { get; set; }
    public Class_A field_A { get; set; } 
    // etc...
}

public class Class_C
{
    public string my_field { get; set; }
    public Class_A field_A { get; set; } 
    // etc...
}

List<Class_A> list_A = new List<Class_A>(); //and then populate it
List<Class_B> list_B = new List<Class_B>(); //and then populate it
List<Class_C> list_C = new List<Class_C>(); //and then populate it

然后,当我更新 list_A 的某些元素时,例如

Class_A old_a, new_a;
old_a = list_A.Where("some condition").FirstOrDefault();
new_a = new Class_A();//and then initialize it
list_A[list_A.FindIndex(x => x.Equals(old_a))] = new_a;

我需要 list_Blist_C 的所有元素,其中字段 Class_A 等于 old_a 将更新为 new_a

1.做这个的最好方式是什么?现在我有以下变体,但我认为它可能会更好:

list_B.Where(x => x.Class_A.Equals(old_a)).ForEach(x => x.Class_A = new_a);

2。如果我有这段代码,更新所有值的最佳方法是什么?

public class Class_D
{
    public string my_field { get; set; }
    public List<Class_A> list_A { get; set; } 
    // etc...
}

List<Class_D> list_D = new List<Class_D>(); //and then populate it

【问题讨论】:

    标签: c# list linq oop


    【解决方案1】:

    看看ObservableCollection and Item PropertyChanged

    当 Class_B 和 Class_C 可以接收到时,您可以从 list_A 中创建一个可观察的集合。

    【讨论】:

    • 感谢您的回复。我会尝试使用它。
    猜你喜欢
    • 1970-01-01
    • 2018-01-28
    • 2019-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    相关资源
    最近更新 更多