将以前的属性值分配给c#

时间:2015-10-16 11:00:09

标签: c#

我有两个小时的类似问题,我用我的完整代码解释。

所以,看看它是我的示例代码

我有一个名为Employee的类,其中包含一些属性

我想将一些值设置为我的类属性,就像这样

Employee obj = new Employee()
{
 userName="aaa@aa.com",

 email=userName
}

它引发了错误。 The user name does not exist in this context

我知道可以这样做

Employee obj = new Employee()    
 obj.userName="aaa@aa.com",  
 obj.email=userName

但我不想要它。请帮助我如何将prev property分配给我的下一个房产。

修改

实际上我在LINQ查询选择函数中使用了这个类,所以我无法全局分配对象。

这是我的完整原始代码

*PersonalRequestModel model = new PersonalRequestModel();
            model = (from personal in this.travelContext.RecruitmentJobs
                     join jobdesc in this.travelContext.JobDescriptions on personal.id equals jobdesc.recruitmentJobId into job
                     from jobd in job.DefaultIfEmpty()
                     where personal.id == modelId
                     // where personal.id == modelId
                     select new
                     {
                         gjobdescription = jobd,
                         gpersonal = personal
                     }).GroupBy(x => x.gpersonal.id)
                     .Select(personalother => new PersonalRequestModel
                     {
                         jobdescrip = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gjobdescription,
                         recuritmentjob = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal,
                         //recuritmentjob = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal,
                         personalviewdetail = new PersonalRequestDisplayModel
                         {
                             Gender = personalother.FirstOrDefault(x => x.gjobdescription.recruitmentJobId == personalother.Key).gjobdescription.gender,
                             TypeOfVacancy = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.typeOfVacancy,
                             newOrReplacement = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.newOrReplacement,
                             Designation = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.designation,
                             DateOfRequest = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.dateOfRequest,
                             HeadCount = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.headcount,
                             division = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.division,
                             HiringDepartment = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.hiringDepartment,
                             budgetorNonbudget = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.budgetorNonbudget,
                             Qualificationdesc = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.educationalQualification,
                             expectedDateOfJoin = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.expectedDateOfJoin,
                             ReasonForRequest = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.reason,
                             noofcandiate = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.noofCandidate,
                             workexp = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.workExperience,
                             eduqual = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.educationalQualification,
                             //isReplacementEmpNo = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.isReplacementEmpNo,
                             // isReplacementName = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.isReplacementEmpNo,
                             isTemporaryPeriod = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.isTemporaryPeriod,
                             hrApprovalStatus = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.hrApprovalStatus,
                             hrApprovalDate = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.hrApprovalDate,
                             hrApprovalRemarks = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.hrApprovalRemarks,
                             level2ApprovalStatus = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.level2ApprovalStatus,
                             level2ApprovalDate = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.level2ApprovalDate,
                             level2ApprovalRemarks = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.level2ApprovalRemarks,
                             level3ApprovalStatus = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.level3ApprovalStatus,
                             level3ApprovalDate = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.level3ApprovalDate,
                             level3ApprovalRemarks = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.level3ApprovalRemarks,
                             h1ApprovalStatus = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.h1ApprovalStatus,
                             h1ApprovalDate = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.h1ApprovalDate,
                             h1ApprovalRemarks = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.h1ApprovalRemarks,
                             h2ApprovalStatus = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.h2ApprovalStatus,
                             h2ApprovalDate = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.h2ApprovalDate,
                             h2ApprovalRemarks = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.h2ApprovalRemarks,
                             h3ApprovalStatus = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.h3ApprovalStatus,
                             h3ApprovalDate = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.h3ApprovalDate,
                             h3ApprovalRemarks = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.h3ApprovalRemarks,
                             positionName = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.positionName,
                             positionNumber = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.positionNumber,
                             orgchart = personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.orgChartUrl,
                             l2approvaluserid = this.travelContext.EmployeeReportingLevels.Where(e => e.userId == personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.createdBy).FirstOrDefault().level2,
                             l3approvaluserid = this.travelContext.EmployeeReportingLevels.Where(e => e.userId == personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.createdBy).FirstOrDefault().level3,
                             h1approvaluserid = this.travelContext.EmployeeReportingLevels.Where(e => e.userId == personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.createdBy).FirstOrDefault().h1,
                             h2approvaluserid = this.travelContext.EmployeeReportingLevels.Where(e => e.userId == personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.createdBy).FirstOrDefault().h2,
                             h3approvaluserid = this.travelContext.EmployeeReportingLevels.Where(e => e.userId == personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.createdBy).FirstOrDefault().h3,
                             ID = modelId,
                             l2Name = this.travelContext.Employees.Where(emp => emp.userId == l2approvaluserid).FirstOrDefault().firstName,
                         },
                         //    jobdescrip = personalother.Select(x => x.gjobdescription).Distinct().ToList()
                     }).FirstOrDefault();*

错误已归入l2Name属性

2 个答案:

答案 0 :(得分:4)

对象初始化程序块无法引用正在创建的对象,因为它尚不存在。这是编译器中的一个约束,你无法解决它。

我建议你通过构造函数注入值并在内部设置它。这样可以更多地保护不变量,并使类不可变。

public class Employee
{
    public Employee(string email)
    {
        UserName = email;
        Email = email;
    }

    public string UserName { get; }
    public string Email { get; }
}

编辑:如果始终是用户名等于电子邮件地址,我甚至可能会执行以下操作:

public class Employee
{
    public Employee(string email)
    {
        Email = email;
    }

    public string UserName => Email;
    public string Email { get; }
}

答案 1 :(得分:2)

你可以这样做

ModelAdmin

在您的情况下,代码就像

var str = "aaa@aa.com"
Employee obj = new Employee()
{
 userName=str,

 email=str
}

但如果我有类似的代码,我不会使用对象初始化程序。如果出现任何问题,它会使调试变得更加困难。