对数据库操作时内置的方法
1. Contains 确定wenJianID集合元素是否在id集合中。
例子:查询出List<string> wenJianID中所有的数据,list的集合中只有一个字段id
public async Task<List<WenJianXX>> GetListByWJIDList(List<string> wenJianID)
{
return await _devDbContext.WenJianXXes.Where(item => item.ZUOFEIBZ == 0 && wenJianID.Contains(item.ID)).ToListAsync();
}
2. FromSql 执行sql语句。命名空间:Microsoft.EntityFrameworkCore ,OracleParameter是替换sql语句中:ChuangJianR的方法 命名空间:Oracle.ManagedDataAccess.Client
public async Task<List<WenJianXX>> GetLBWenJianList(string tianJiaRID, int wenJianLB, string bingQuDM)
{
string strSql = "select ID, WENJIANLB, SUOSHUID, WENJIANLX, WENJIANMC, WENJIANDX, SHANGCHUANSJ, ZUOFEIBZ, LEVELID, SUOSHUMC, SUOZAIML, BINGQUDM, BINGQUMC, WENJIANML,HOUZHUILX from DMT_WENJIANXX where ZUOFEIBZ=0";
if (wenJianLB == 3)
{
strSql += " and ((WENJIANLB=3) or (WENJIANLB=1 and SUOSHUID=:ChuangJianR))";
return await _devDbContext.WenJianXXes.FromSql(strSql, new[] { new OracleParameter(":ChuangJianR", tianJiaRID) }).ToListAsync();
}
else
{
strSql += " and ((WENJIANLB=2 and BINGQUDM=:BingQuDM ) or (WENJIANLB=1 and SUOSHUID=:ChuangJianR))";
return await _devDbContext.WenJianXXes.FromSql(strSql, new[] { new OracleParameter(":BingQuDM", bingQuDM), new OracleParameter(":ChuangJianR", tianJiaRID) }).ToListAsync();
}
}
3. ContinueWith 返回异步集合执行的延续。使用场景:new List<Task>()用作异步任务 和new List<ListDto>()用作执行查询,都需要获取异步返回的结果时
WhenAll 执行异步任务。使用场景:后面的操作需要异步任务返回的结果时使用~~~
例子:
var tasks = new List<Task>(); 用作异步任务
var shouShuXXList = new List<ShouShuXXListDto>();用作后面的查询使用
bingQuDMs.ToList().ForEach(t => {
//初始化
tasks.Add(_shouShuXXService.GetShouShuXXList(t).ContinueWith(async p => {
shouShuXXList.AddRange(await p);ContinueWith是异步的延续操作,添加异步任务的同时把返回的结果添加到shouShuXXList中
}));
}));
});
await Task.WhenAll(tasks);等待异步执行完成返回结果时再去执行下面的操作
·······