linq ForEach中遇到的坑
直接上代码
public Task Do()
{
var itemList=new List<X>();
itemList.ForEach(
async item=>{
//会有并发问题
await Add();
});
//修改为
foreach(var item in itemList){
await Add(item);
}
}
public Task Add(X x){
//相关数据库操作
}
add方法是数据库插入操作,那么在这个ForEach里面会产生并发问题,需要把ForEach改为foreach()就可以,根本原因是因为ForEach中是委托去执行方法,无法await