0

ASP MVC 应用程序。在控制器中,我从数据库中获取 2 行,比较它们并根据需要添加新数据。每个的模型如下所示:

    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Gender { get; set; }

    public List<PersonAlias> AliasList { get; set; }
    public List<Identification> IDList { get; set; }

当我到达列表时,我遇到了麻烦。我擅长循环和比较,但在添加时遇到了麻烦。这是我所拥有的:

        var newRecord =
                (from p in db.Person
                 where p.ApplicantID.Equals(ApplicantId)
                 select p).First();

        //  Get the existing applicant record
        var existingRecord =
                (from e in e_db.PersonAttributes
                 where e.PersonID.Equals(PersonId)
                 select e).First();

        foreach (var newAlias in newRecord.PersonAlias)
        {
            matchesAny = true;

            List<PersonAlia> tempAlias = new List<PersonAlia>();

            if ( existingRecord.PersonAlias != null)
            {
                foreach (var oldAlias in existingRecord.PersonAlias)
                {
                    if ((oldAlias.FirstName != newAlias.FirstNameAlias) || (oldAlias.LastName != newAlias.LastNameAlias))
                    {
                        matchesAny = false;
                    }

                    if (!matchesAny)
                    {

                        tempAlias.Add(new PersonAlia
                        {
                            FirstName = newAlias.FirstNameAlias,
                            MiddleName = newAlias.MiddleNameAlias,
                            LastName = newAlias.LastNameAlias,
                            CreatedBy = User.Identity.Name,
                            CreateDate = DateTime.Now,
                            ModifiedBy = User.Identity.Name,
                            ModifiedDate = DateTime.Now
                        });
                    }
                } // End inner foreach

                existingRecord.PersonAlias.Add(new PersonAlia
                {
                    FirstName = tempAlias.
                    MiddleName = newAlias.MiddleNameAlias,
                    LastName = newAlias.LastNameAlias,
                    CreatedBy = User.Identity.Name,
                    CreateDate = DateTime.Now,
                    ModifiedBy = User.Identity.Name,
                    ModifiedDate = DateTime.Now
                });

            } // End outer Foreach

我正在尝试将项目添加到列表中的临时列表中,这看起来不错,但我无法弄清楚如何从临时列表中移动到将其添加到现有记录中。完成后,我将添加 db.savechanges();

我想我混合了几种方法(模型、linq、EF),所以如果有人可以建议一种方法并指向一个好的教程,那就太好了。谢谢你。

4

1 回答 1

0

可能最简单的方法是首先获取所有匹配的记录。然后将它们放入一个临时集合中,然后循环并调用existingRecord.PersonAlias.Add。

您正在做的确实是在迭代集合时尝试修改集合。

于 2012-12-06T14:46:28.927 回答