1

基本的に、2つのObservableCollectionsでこれを実行できるかどうかを知りたいです。

oldList = newList;

アプリ全体に入力される2つのリストがあり、それらが入力されるたびに、「新しい」値を「古い」値にしてから、新しい値のセットを取得して「新しい」リストに入れます。

簡単ですか?newList全体を毎回繰り返さずにこれを行う他の方法はありますか?

編集:これは、新しいリストが作成される方法です。基本的には、newListの内容をoldListに入れたいだけです。

                foreach (object obj in ts.GetVariables())
            {
                if ((obj.ToString() != "_SMSTSReserved2") || (obj.ToString() != "OSDJoinPassword") || (obj.ToString() != "OSDLocalAdminPassword"))
                {
                    TSVar var = new TSVar();
                    var.TSVarName = obj.ToString();
                    var.TSVarValue = ts[obj.ToString()];
                    newList.Add(var);
                }
            }
            oldList.Clear();
            foreach (TSVar var in newList)
            {
                oldList.Add(var);
            }
4

2 に答える 2

3

以下にリストされている拡張方法を使用する場合、実行しようとしていることは1つのライナーになります。

oldList.Replace(newList);

次のように、ObservableCollectionの拡張メソッドを作成します。

public static class ObservableCollectionExtensionMethods
    {
        public static void Replace<T>(this ObservableCollection<T> old, ObservableCollection<T> @new)
        {
            old.Clear();
            foreach (var item in @new)
            {
                old.Add(item);
            }
        }
    }

そして、これはあなたがそれをどのように使うかです:

using System.Collections.ObjectModel;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace ExtensionMethods
{
    [TestClass]
    public class ObservableCollectionExtensionMethodsTest
    {
        [TestMethod]
        public void ReplaceTest()
        {
            // Arrange
            var old = new ObservableCollection<string> { "1"};
            var @new = new ObservableCollection<string> {"2"};

            // Act
            old.Replace(@new);

            // Assert
            Assert.AreEqual("2", old.First());
        }
    }
}
于 2013-02-25T19:12:43.343 に答える
0

これがあなたが探しているものだと思いますか?これにより、newListにあったすべてのものがoldListに追加されます。

ObservableCollection<YourType> oldList = new ObservableCollection<YourType>(newList);
newList.clear();
//put new stuff in your list here.
于 2013-02-25T19:06:05.550 に答える