【发布时间】:2019-03-26 10:26:14
【问题描述】:
我想更新对象列表中的属性。该属性来自 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)
请问我可以解决这个问题吗? 我尽力了,但无法解决。谢谢
【问题讨论】:
-
Where 和 Select 等操作专门设计用于不修改原始集合。但是,当您使用列表时,您可以使用
List<T>.ForEach(T => /*do something with T*/) -
感谢您的快速回答,是的...我的问题是我无法修改 foreach 内的属性
-
啊,我没看到你已经在使用它了。您可以使用
MyListOfObject.ForEach(o => o.attributeToUpdate = newValue),但如果 newValue 无法计算一次,或者需要某种索引器,请不要因为需要使用传统的for循环而感到难过。 -
问题是新值来自aspnet用户列表,问题是如何更新user.id = mylistOfObject.profesionalId
-
如果您无法使用 LINQ 找到答案,老实说,如果您使用带有
if的for循环,请不要感到失败:)
标签: c# entity-framework linq lambda