首页 > 解决方案 > 使用 Lambda C# 使用另一个列表更新对象列表中的属性

问题描述

我想更新对象列表中的属性。该属性来自 aspnetUsers 列表

这是对象

Object
{
  public Guid Id { get; set; }
  public string profesionalId{ get; set; }
   public string attributeToUpdate { get; set; }
}

我有这段代码不起作用

List<Object> MyListOfObject=new List<Object>();
// do some queries to populate the list
// more things here...
//my first problem comes here, can not get the list of users
var listOfUsers=  _dbContext.Users.Where(u => MyListOfObject.Any(id => id.ProfesionalId == u.Id)).ToList();

如果上面的代码有效,我想做一个

MyListOfObject.ForEach(
 //here replace the MyListOfObject.attributeToUpdate 
).where (MyListOfObject.profesionalId==listOfUsers.Id)

请问我可以得到解决方案吗?我尽力做到这一点,但无法解决。谢谢

标签: c#entity-frameworklinqlambda

解决方案


建立列表:

var listOfUsers= _dbContext.Users.Where(u => MyListOfObject.Select(c=>c.ProfesionalId).ToList().Contains(u.id)).ToList(); 

但总的来说,您应该可以这样做:

MyListOfObject.ForEach(l => l.PropertyToUpdate= _dbContext.Users.First(x => x.id == l.ProfessionalId).PropertyYouGetDataFrom);

推荐阅读