1. 字符串拆分再组合:
courseWithPrivilege.DeptNames = string.Join(",",
(privilege.DeptIds ?? string.Empty)
.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Select(x =>
groups.FirstOrDefault(g => g.NodeID.ToString().ToLower() == x.ToLower())?.NodeName));
2.一个包含逗号的字符串 转换成 数组
var answerIds = answer.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
.Select(int.Parse).ToList();
3. 返回2个参数:Tuple
private async Task<Tuple<IEnumerable<Training_ExamRecord_History>, int>> GetReviewExamRecord(string jobNumber, int pageNo, int pageSize)
{
var query1 = _db.Training_ExamRecord_History.Where( m => m.ReviewBy == jobNumber && m.Status == 0);
var pagedQuery = await query1.OrderByDescending(x => x.CreatedDate).Skip((pageNo - 1) * pageSize).Take(pageSize).ToListAsync();
return new Tuple<IEnumerable<Training_ExamRecord_History>, int>(pagedQuery, await query1.CountAsync());
}
4. 对多个数据库同时操作进行写入或者删除时使用:
using (var trans = _db.Database.BeginTransaction())
{
trans.Commit();
}
5. 2次排序,分页
var result = await query.OrderBy(x=>x.ToDo_State).ThenByDescending(x=>x.ID).Skip((page - 1) * numberPerPage).Take(numberPerPage).ToListAsync();
6. 多线程await的作用
var existTag = await _db.Blog_Contents.Where(t => t.Id == blog.Id).FirstOrDefaultAsync();
var existTag =_db.Blog_Contents.Where(t => t.Id == blog.Id).FirstOrDefaultAsync();
第二个不带await 关键字,查询的是线程任务,这个时候永远有数据,如果遇到: if(existTag == null),永远不会进入条件语句。