将更改的列表合并到主列表的最简单方法

时间:2012-12-11 04:48:43

标签: c# winforms list

我有两个类对象列表:

private List<IntVector> UserData = new List<IntVector>();
private List<IntVector> EditData = new List<IntVector>();

UserData是主列表,EditData是另一个用于添加,删除或修改列表的列表。其中一个类memeber是CaseNo,对于IntVector不会改变。

我已对EditData进行了更改,并希望将更改合并到UserData

知道该怎么做吗?

编辑:以下是IntVector

的定义
class IntVector
    {
        //private DateTime date_kept;
        private string date1;
        private string next_date;
        private string presence;
        private string next_hearing_time;


        //private Hashtable case_type;
        private string court_name;
        private string case_no;
        private string status;
.
.
.
        public string Date1
        {
            set { this.date1 = value; }
            get { return this.date1; }
        }

        public string NextDate
        {
            get { return this.next_date; }
            set { this.next_date = value; }
        }

}

2 个答案:

答案 0 :(得分:1)

假设IntVector是一个结构,IList.Union方法通过合并列表并删除重复项来完成所需的操作:

UserData  = UserData.Union(EditData).ToList();

如果它不是结构..那么你仍然可以执行上述操作,但是你必须重载等于运算符,Equals以及可能GetHashCode

答案 1 :(得分:0)

我认为你所寻找的是:

UserData = (from u in UserData
                      join e in EditData
                      on u.CaseNo equals e.CaseNo
                      into joined
                      from x in joined.DefaultIfEmpty()
                      select new IntVector
                      {
                          CaseNo = u.CaseNo,
                          Data = x == null ? u.Data : x.Data
                      }).ToList();