首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Foreach循环在第一次迭代中绑定所有数据

Foreach循环在第一次迭代中绑定所有数据
EN

Stack Overflow用户
提问于 2014-06-27 19:56:46
回答 1查看 215关注 0票数 0

在我的ASP.MVC 4 web应用程序中,我试图将education细节绑定到Candidate模型。现在发生的情况是,在foreach循环的第一次迭代中,它将相同的数据绑定到所有候选对象。我被困在这上面已经超过4个小时了,我似乎想不出.

在我的控制器里:

代码语言:javascript
复制
 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模型:

代码语言:javascript
复制
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; }
}

候选人模型:

代码语言:javascript
复制
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; }
}

我认为:

代码语言:javascript
复制
<span>Required: 
    @foreach (var education in candidate.JobRequisition.JobDescription.Educations)
    {
        <div>-@education.EducationName</div>
    }
</span>

现在的问题是,在第一次迭代中,它为所有9名候选人设置教育,然后在第二次迭代中再次添加相同的教育等等,因此,我得到了类似于这张图片中的重复数据(教育被重复9次,因为总共有9名候选人,而且db中只有3项教育条目):

我正疯狂地想办法解决这个问题,所以你的帮助将使我的日子过得很愉快。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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是否存在;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24459861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档