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
我正在尝试将项目添加到列表中的临时列表中,这似乎没问题,但我无法弄清楚如何从临时列表移动到将其添加到existingRecord。完成后,我将添加db.savechanges();
我认为我混合了几种方法(模型,linq,EF),所以如果有人可以推荐一个methoid并指向我一个好的教程,那就太好了。谢谢。
答案 0 :(得分:0)
实现此目的的最简单方法可能是首先获取所有匹配的记录。 然后将它们放入临时集合中,然后循环遍历并调用 existingRecord.PersonAlias.Add。
你正在做的是确实在迭代过程中修改一个集合。