使用Lambda C#使用另一个列表更新对象列表中的属性

时间:2019-03-26 10:26:14

标签: c# entity-framework linq lambda

我想更新对象列表中的属性。该属性来自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)

我可以为此找到解决方案吗? 我尽力做到了,但解决不了。谢谢

1 个答案:

答案 0 :(得分:1)

构建列表:

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);