做网站买那种服务器,给个高质量的网站,网页游戏排行选择,网站建设进度总结一个简单的列子#xff0c;需要把一个集合的数据添加到数据库中。 我先这样写了#xff0c;然后报错了 public async TaskIHttpActionResult Test([FromUri]string name ){Liststring strList new Liststring() { 测试, 需要把一个集合的数据添加到数据库中。 我先这样写了然后报错了 public async TaskIHttpActionResult Test([FromUri]string name ){Liststring strList new Liststring() { 测试, 测试1, 测试2, 测试3, 测试4, 测试5, 测试6, 测试7, 测试8 };strList.ForEach(async x {JkSystemname jk await dbOracle.JkSystemnames.AsQueryable().FirstAsync(ee ee.Name x);if (jk null){jk new JkSystemname() { Name x };dbOracle.JkSystemnames.Insert(jk);}});return await Task.FromResult(Ok(new { errcode 0, errmag success }));} 两个办法解决循环里面不能使用异步 ①把方法提出来然后返回task然后一起执行这样不会按顺序执行 public async TaskIHttpActionResult Test([FromUri]string name ){Liststring strList new Liststring() { 测试, 测试1, 测试2, 测试3, 测试4, 测试5, 测试6, 测试7, 测试8 };IEnumerableTask tasks strList.Select(x TestAsync(x));//映射到一个可以遍历的taskawait Task.WhenAll(tasks); //使用task.whenall 完成return await Task.FromResult(Ok(new { errcode 0, errmag success }));}/// summary/// 根据传入的名称返回需要执行的task代码/// /summary/// param namename/param/// returns/returnspublic async Task TestAsync(string name){JkSystemname jk await dbOracle.JkSystemnames.AsQueryable().FirstAsync(ee ee.Name name);if (jk null){jk new JkSystemname() { Name name };dbOracle.JkSystemnames.Insert(jk);}} ②扩展方法一个个的执行 /// summary/// 使用异步遍历处理数据/// /summary/// typeparam nameT需要遍历的基类/typeparam/// param namelist集合/param/// param namefuncLambda表达式/param/// returns/returnspublic static async Task ForEachAsyncT(this ListT list, FuncT, Task func){foreach (T value in list){await func(value);}} public async TaskIHttpActionResult Test([FromUri]string name ){Liststring strList new Liststring() { 测试, 测试1, 测试2, 测试3, 测试4, 测试5, 测试6, 测试7, 测试8 };//①先得到集合然后一起执行//IEnumerableTask tasks strList.Select(x TestAsync(x));//映射到一个可以遍历的task//await Task.WhenAll(tasks); //使用task.whenall 完成//②一步一步的循环await strList.ForEachAsyncstring(async x {JkSystemname jk await dbOracle.JkSystemnames.AsQueryable().FirstAsync(ee ee.Name x);if (jk null){jk new JkSystemname() { Name x };dbOracle.JkSystemnames.Insert(jk);}});return await Task.FromResult(Ok(new { errcode 0, errmag success }));} 转载于:https://www.cnblogs.com/Sea1ee/p/10624769.html