我正在创建一个Employee类对象的通用列表。
List<Employee> EmployeeList = new List<Employee>
{
new Employee { ecode=1, ename="Rohit", salary=20000, mgrid="3" },
new Employee { ecode=2, ename="Sangeeta", salary=12000, mgrid="5"},
new Employee { ecode=3, ename="Sanjay", salary=10000, mgrid="5"},
new Employee { ecode=4, ename="Arun", salary=25000, mgrid="3"},
new Employee { ecode=5, ename="Zaheer", salary=30000, mgrid=null}
};
'mgrid'是Manager的员工ID。我想增加经理人的工资。 我尝试使用以下方法进行,但所有员工的工资都在增加。
var mgrsal = from e1 in emplst
join e2 in emplst
on e1.ecode.ToString() equals e2.mgrid into empdata
select new Employee
{
ecode = e1.ecode,
ename=e1.ename,
salary=e1.salary*1.1,
mgrid = e1.mgrid
};
我在Visual Studio IDE中使用C#.net进行编码,我也尝试使用Contains()和Any()方法,但我无法使用。
答案 0 :(得分:1)
LINQ就是查询而不是更新。您可以使用LINQ从列表中获取所有管理器,
var managers = from e in emplst
where emplst.Any(x => x.mgrid == e.ecode.ToString())
select e;
或使用JOIN
(需要在Equals
课程上实施GetHashCode
和Employee
方法才能使Distinct
工作:
var managers = (from e in emplst
join e2 in emplst on e.ecode.ToString() equals e2.mgrid
select e).Distinct();
然后迭代并改变薪水:
foreach(var manager in managers)
manager.salary *= 1.1;