Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将以前的属性值指定给c中的下一个属性#_C# - Fatal编程技术网

C# 将以前的属性值指定给c中的下一个属性#

C# 将以前的属性值指定给c中的下一个属性#,c#,C#,这是我的示例代码 我有一个名为Employee的类,它有一些属性 我想给我的类属性赋值,就像这样 Employee obj = new Employee() { userName="aaa@aa.com", email=userName } var str = "aaa@aa.com" Employee obj = new Employee() { userName=str, email=str } 它抛出了一个错误: 此上下文中不存在用户名 我知道这样做是可

这是我的示例代码

我有一个名为
Employee
的类,它有一些属性

我想给我的类属性赋值,就像这样

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

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

 email=str
}
它抛出了一个错误:

此上下文中不存在用户名

我知道这样做是可能的:

Employee obj = new Employee()    
 obj.userName="aaa@aa.com",  
 obj.email=userName
但我不想要它。如何将上一个属性指定给下一个属性

编辑 实际上,我在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
属性中抛出了错误

您可以这样做

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

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

 email=str
}
在您的情况下,代码如下所示

 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,

  }                     

但若我有类似的代码,我不会使用对象初始值设定项。如果出现任何问题,这会使调试更加困难

你可以这样做

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

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

 email=str
}
在您的情况下,代码如下所示

 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,

  }                     

但若我有类似的代码,我不会使用对象初始值设定项。如果出现任何问题,这会使调试更加困难

对象初始值设定项块无法引用正在创建的对象,因为该对象尚不存在。这是编译器中的一个约束,您无法绕过它

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

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; }
}

对象初始值设定项块无法引用正在创建的对象,因为该对象尚不存在。这是编译器中的一个约束,您无法绕过它

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

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; }
}

哈哈,我知道有人这样回答。请稍候,我将编辑我的问题\@RameshRajendran:是的,因为这是Kai提到的最好的解决方案,它是一个编译器限制,从c#6开始你就无法逃脱。将来可能会有一种特殊的语法允许这样做。哈哈,我知道有人会给出这种类型的答案。请稍候,我将编辑我的问题\@RameshRajendran:是的,因为这是Kai提到的最好的解决方案,它是一个编译器限制,从c#6开始你就无法逃脱。将来可能会有一种特殊的语法允许这样做。您的
obj.userName
userName
是不同的东西吗?
userName
是一个局部变量吗?整理代码,然后指出哪一位实际上与你的问题相关。userName和
userName
是不同的东西?
userName
是一个局部变量吗?整理代码,然后指出哪一位与您的问题实际相关