在我的ASP.MVC 4 web应用程序中,我试图将education细节绑定到Candidate模型。现在发生的情况是,在foreach循环的第一次迭代中,它将相同的数据绑定到所有候选对象。我被困在这上面已经超过4个小时了,我似乎想不出.
在我的控制器里:
if (dsResult.Tables[18].Rows.Count > 0)
{
foreach (DataRow drRequiredEducation in dsResult.Tables[18].Rows)
{
var jobDescriptionCode = Convert.ToInt32(drRequiredEducation["JobDescriptionCode"].ToString());
var education = new Education();
education.EducationCode = Convert.ToInt32(drRequiredEducation["EducationCode"].ToString());
education.EducationName = drRequiredEducation["EducationName"].ToString();
var candidates = candidatePreOfferViewModel.Candidates.Where(x => x.JobRequisition.JobDescriptionCode == jobDescriptionCode);
foreach (var candidate in candidates)
{
candidate.JobRequisition.JobDescription.JobDescriptionCode = jobDescriptionCode;
candidate.JobRequisition.JobDescriptionCode = jobDescriptionCode;
candidate.JobRequisition.JobDescription.Educations.Add(education);
}}}在我的CandidatePreOfferViewModel模型:
public class CandidatePreOfferViewModel
{
public CandidatePreOfferViewModel()
{
this.Candidates = new List<Candidate>();
this.DepartmentCandidates = new List<DepartmentCandidate>();
}
public int SelectedDepartmentCode { get; set; }
public string SelectedCandidateStatusCode { get; set; }
public List<Candidate> Candidates { get; set; }
public List<DepartmentCandidate> DepartmentCandidates { get; set; }
}候选人模型:
public class Candidate
{
public Candidate()
{
this.Educations = new List<Education>();
this.Experiences = new List<Experience>();
this.JobRequisition = new JobRequisition();
this.Performances = new List<CandidatePerformance>();
this.RequiredEducationForRequisition = new List<Education>();
}
.....xyz....
public List<Education> Educations { get; set; }
public List<Experience> Experiences { get; set; }
public JobRequisition JobRequisition { get; set; }
public List<CandidatePerformance> Performances { get; set; }
public List<Education> RequiredEducationForRequisition { get; set; }
}我认为:
<span>Required:
@foreach (var education in candidate.JobRequisition.JobDescription.Educations)
{
<div>-@education.EducationName</div>
}
</span>现在的问题是,在第一次迭代中,它为所有9名候选人设置教育,然后在第二次迭代中再次添加相同的教育等等,因此,我得到了类似于这张图片中的重复数据(教育被重复9次,因为总共有9名候选人,而且db中只有3项教育条目):

我正疯狂地想办法解决这个问题,所以你的帮助将使我的日子过得很愉快。
发布于 2014-06-28 16:24:43
在第二个for循环中,检查是否已经为该候选人添加了这种非常规教育。
(候选人中的变量候选人){ candidate.JobRequisition.JobDescription.JobDescriptionCode = jobDescriptionCode;candidate.JobRequisition.JobDescriptionCode = jobDescriptionCode; //检查是否已经增加了这种教育。var alreadyAdded = candidate.JobRequisition.JobDescription.Educations.Where(e=>e.EducationName==education.EducationName).FirstOrDefault();if(alreadyAdded!=null) { candidate.JobRequisition.JobDescription.Educations.Add(education);}
这个.Where是linq,您可能需要添加使用System.Linq;否则,您可以循环通过候选人的教育,看看education.EducationName是否存在;
https://stackoverflow.com/questions/24459861
复制相似问题