代码之家  ›  专栏  ›  技术社区  ›  generationalVision

如何比较两个数组并用第一个数组中的值更新第二个数组?

  •  0
  • generationalVision  · 技术社区  · 7 年前

    我有以下方法,该方法接受MyExampleClass和id的数组。我试图解决的当前问题在该方法中有注释。

            public void Update(MyExampleClass[] example, int id)
        {
            //get the current values
            var current = GetCurrentMyExampleClassValues(id);
    
            //Compare the example and current arrays
    
            //Update the OptedIn value for each item in the current array with the OptedIn value from the example array.
    
            //The result is our new updated array
    
            //Note that current array will always contain 3 items - Name1, Name2, Name3, 
            //but the example array can contain any combination of the 3.
            var newArray = PsuedoCodeDoStuff();
    
            var result = _myService.Update(newArray);
        }
    
    
            private MyExampleClass[] GetCurrentMyExampleClassValues(int id)
        {
            var current = new MyExampleClass[]
                {
                    new MyExampleClass {Name =  "Name1", OptedIn = false },
                    new MyExampleClass {Name =  "Name2", OptedIn = true },
                    new MyExampleClass {Name =  "Name3", OptedIn = false }
                };
    
            return current;
        }
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Steve    7 年前

    在我看来,您只需要在当前数组上循环。使用名称作为键在示例数组中搜索当前数组中的每个项。如果您找到它,请更新。

    foreach(MyExampleClass item in current)
    {
        MyExampleClass exampleItem = example.FirstOrDefault(x => x.Name == item.Name);
        if(exampleItem != null)
            item.OptedIn = exampleItem.OptedIn;
    }