使用linq分配值

Pra*_*ari 35 c# linq

public class Company
{
    public int id { get; set; }
    public int Name { get; set; }
}

List<Company> listofCompany = new List<Company>();
Run Code Online (Sandbox Code Playgroud)

这是我的公司列表集合,我想使用LINQ为Name属性赋值

listofCompany.Where(d => d.Id = 1);
Run Code Online (Sandbox Code Playgroud)

(我想要公司ID 1的名称属性)

我该如何分配它.

Ali*_*tad 105

使用Linq将是:

 listOfCompany.Where(c=> c.id == 1).FirstOrDefault().Name = "Whatever Name";
Run Code Online (Sandbox Code Playgroud)

UPDATE

这可以简化为......

listOfCompany.FirstOrDefault(c => c.id == 1).Name ="Whatever Name";


UPDATE

对于多个项目(条件由多个项目满足):

 listOfCompany.Where(c=> c.id == 1).ToList().ForEach(cc => cc.Name = "Whatever Name");
Run Code Online (Sandbox Code Playgroud)

  • 这实际上非常有用.我想知道如何一次设置多个变量值.我的对象实际上有两个我需要在一次传递中设置的变量. (3认同)
  • 你可以将你的第一个例子缩短为`listOfCompany.FirstOrDefault(c => c.id == 1).Name ="Whatever Name";` (2认同)

TcK*_*cKs 7

您可以创建扩展方法:

public static IEnumerable<T> Do<T>(this IEnumerable<T> self, Action<T> action) {
    foreach(var item in self) {
        action(item);
        yield return item;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在代码中使用它:

listofCompany.Do(d=>d.Id = 1);
listofCompany.Where(d=>d.Name.Contains("Inc")).Do(d=>d.Id = 1);
Run Code Online (Sandbox Code Playgroud)