如何使用LINQ更新c#.net中泛型列表中特定对象的特定字段

如何使用LINQ更新c#.net中泛型列表中特定对象的特定字段,linq,linq-to-objects,Linq,Linq To Objects,我正在创建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="

我正在创建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}  
};

我在Visual Studio IDE中用C#.net编写代码,我还尝试使用Contains()和Any()方法,但我无法使用。

LINQ是关于查询,而不是更新。您可以使用LINQ从列表中获取所有经理

var managers = from e in emplst
               where emplst.Any(x => x.mgrid == e.ecode.ToString())
               select e;
或者使用
JOIN
(需要在
Employee
类上实现
Equals
GetHashCode
方法,以使
与众不同
工作:

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;

感谢@MarcinJuraszek的回答。最终结果要求显示所有员工,只增加经理的工资。因此,我在Emplist.Union(经理)中执行了以下var mgrsal=from m m的联合选择m;还有比这更好的吗?您的初始列表中仍然有所有员工,所以只要写出来就可以了。我尝试了。只显示经理及其增加的工资。因此,我执行了工会。
foreach(var manager in managers)
    manager.salary *= 1.1;