0

Here is my sample code

I have a class named as Employee with some properties

I want to assign some values to my class properties, like this way

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

 email=userName
}

It threw an error:

The user name does not exist in this context

I know it is possible to do this way:

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

But I don't want it. How can I assign prev property to my next property?

Edit

Actually I have using this class inside of LINQ query select function , So i can't assign the object globally.

This is my full original code

*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();*

Error has been throw in l2Name property

Community
  • 1
  • 1
Ramesh Rajendran
  • 37,412
  • 45
  • 153
  • 234

2 Answers2

4

Object initializer blocks cannot reference the object being created, because it doesn't exist yet. This is a constraint in the compiler and you cannot get around it.

I'd recommend you to inject the value via the constructor and set it internally. This way you protect your invariants more and can make the class immutable.

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

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

EDIT: If it's ALWAYS the case that the user name is equal to the email address I'd probably even just do the following:

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

    public string UserName => Email;
    public string Email { get; }
}
sara
  • 3,521
  • 14
  • 34
2

You can do it like this way

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

 email=str
}

In your case, the code goes like

 var _l2approvaluserid = this.travelContext.EmployeeReportingLevels.Where(e => e.userId == personalother.FirstOrDefault(x => x.gpersonal.id == personalother.Key).gpersonal.createdBy).FirstOrDefault().level2;
 personalviewdetail = new PersonalRequestDisplayModel
   {
     ....
     l2approvaluserid = _l2approvaluserid;
     ....
     l2Name = this.travelContext.Employees.Where(emp => emp.userId == _l2approvaluserid).FirstOrDefault().firstName,

  }                     

But if i have similar code, i would not use object initializer. It makes debugging a bit more difficult if there is any issue.

Tilak
  • 30,108
  • 19
  • 83
  • 131