【问题标题】:how to add particular item by comparing one list with another and add item in list如何通过将一个列表与另一个列表进行比较来添加特定项目并在列表中添加项目
【发布时间】:2022-01-04 13:06:45
【问题描述】:
private List<ProjectEmployee> ProjectEmployeeList { get; set; } = new List<ProjectEmployee>(); 
                                                                   //List for Add employee to project
     public string ProjectEmployeeId { get; set; }
     public string EmployeeProjectid { get; set; } 

     public List<ProjectEmployee> projectemployeelist
        {
            get { return ProjectEmployeeList; }
        }


 public void AddEmployeeToProject(ProjectEmployee projectemployee) // to add employee to project
    {
        ProjectBusinessLogic projectbusinessList = new ProjectBusinessLogic();// object to 
                                                                      access project list

        EmployeeBusinessLogic employeebusinessList = new EmployeeBusinessLogic();//object to 
                                                                      access employeelist

        if(projectbusinessList.projectlist.Any(x=>x.ProjectId == projectemployee.ProjectEmployeeId) ||
            employeebusinessList.employeelist.Any(y => y.EmployeeId==projectemployee.EmployeeProjectid))
        {            
            ProjectEmployeeList.Add(projectemployee);
        }
    }

在这种方法中,我比较了两个列表数据,这就是为什么使用对象 projectbusinessList 和 对象employeebusinessList

使用这种方法,我无法将内容添加到 ProjectEmployee 列表中。谁能告诉我该怎么做??

所以我的要求是“projectid”必须已经存在于“projectlist”中,并且“employeeid”也在“employeelist”中......

然后项目列表中的“projectid”的值将与“projectemployeeid”进行比较,如果它存在,那么它将添加到“projectemployee list”中,并且对于employeeprojectid 也是如此......

所以如果这两个条件都为真,那么它将添加到 projectemployeelist

【问题讨论】:

标签: c# list


【解决方案1】:

所以我的要求是“projectid”必须已经存在于“projectlist”中并且“employeeid”也在“employeelist”中.....

所以如果你知道它是,为什么逻辑会说 OR (||):

if(projectbusinessList.projectlist.Any(x=>x.ProjectId == projectemployee.ProjectEmployeeId) ||
        employeebusinessList.employeelist.Any(y => y.EmployeeId==projectemployee.EmployeeProjectid))

现在它会添加employeeid是否在项目中,或者员工或两者中......但你只想要这两个部分......那是“and”,即&amp;&amp;


另外,我认为您为事物选择的名称对您没有任何好处;他们很难理解:projectemployee 有一个EmployeeProjectid 和一个ProjectEmployeeId - 如果projectemployee 正在定义一些项目:员工映射,那么只有像ProjectId 和@ 这样的属性名称会更清楚987654329@ 然后你可以说“这个对象将一个员工映射到一个项目 - 那里的属性是项目 ID,而这个是员工。他们成对操作以定义映射的事实从 a) 中很清楚类的名称和b)它们都是类的成员,所以一个A对应一个B。每个属性的名称也不需要包含另一个标识符。更奇怪的是(至少对我来说)是我会假设ProjectEmployeeId 是“项目中的员工ID”,但您的x.ProjectId == projectemployee.ProjectEmployeeId 暗示相反(对于其他财产也是如此)

关于您最近的问题的一个反复出现的主题是,出现了非常基本的逻辑错误,比如没有足够的算法计划 - 编写代码时没有考虑“我要让这段代码做什么;我'将首先在 cmets 中勾勒出来" - 我建议首先用您认为的语言编写 cmets,然后翻译成 c#

【讨论】:

  • 使用“&&”仍然无法正常工作@Caius Jard
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多