var list = await _db.Queryable<com_drug>() .LeftJoin<com_drug_common_usages_admi>((a, b) => a.HOS_DRUG_CODE == b.HOS_DRUG_CODE)如何给com_drug_common_usages_admi表添加where筛选条件
时间: 2023-08-15 21:07:06 浏览: 53
你可以在 LeftJoin 后面添加一个 Where 条件来筛选 com_drug_common_usages_admi 表的数据,例如:
```
var list = await _db.Queryable<com_drug>()
.LeftJoin<com_drug_common_usages_admi>((a, b) => a.HOS_DRUG_CODE == b.HOS_DRUG_CODE)
.Where<com_drug_common_usages_admi>(b => b.SomeColumn == someValue)
.ToList();
```
其中,`SomeColumn` 是 com_drug_common_usages_admi 表中的某个列名,`someValue` 是你要筛选的值。这样你就可以根据条件筛选 com_drug_common_usages_admi 表的数据了。
相关问题
public async Task<pms_plan> UpdateOrder(string plaSsn, string direction) { if (string.IsNullOrEmpty(plaSsn) || string.IsNullOrEmpty(direction)) { return null!; } var plsn = await _sqlSugarClient.Queryable<pms_plan>().FirstAsync(s => s.sn == plaSsn); if (plsn == null) { return null!; } var PendingList = await _sqlSugarClient.Queryable<pms_plan>() .OrderBy(it => new { it.plan_date, it.list_order }) .ToListAsync(); int inden = PendingList.FindIndex(i => i.sn == plsn.sn); if (direction == "up") { var plan1 = PendingList[inden - 1]; int i = 0; i = (int)plan1.list_order!; plan1.list_order = plsn.list_order; plsn.list_order = i; _sqlSugarClient.Updateable(plan1).WhereColumns(it => new { it.id }).ExecuteCommand();//更新单 条根据ID } if (direction == "down") { var plan1 = PendingList[inden + 1]; int i = 0; i = (int)plan1.list_order!; plan1.list_order = plsn.list_order; plsn.list_order = i; _sqlSugarClient.Updateable(plan1).WhereColumns(it => new { it.id }).ExecuteCommand();//更新单 条根据ID } _sqlSugarClient.Updateable(plsn).WhereColumns(it => new { it.id }).ExecuteCommand();//更新单 条根据ID return plsn; }优化代码
这是一段 C# 代码,用于更新数据库中的 pms_plan 表中的记录的顺序。如果传入的参数 plaSsn 或 direction 为空,则返回 null。如果找不到与 plaSsn 相匹配的记录,则也返回 null。如果 direction 为 "up",则将该记录与前一条记录的顺序互换;如果 direction 为 "down",则将该记录与后一条记录的顺序互换。最后,更新该记录的顺序,并返回该记录。
对于这段代码,可以进行如下优化:
1. 首先,可以将查询数据库的操作放在一个事务中,以提高效率和数据一致性。
2. 其次,可以使用异步操作来提高代码的性能。
3. 可以使用 LINQ 表达式来简化代码,使其更易读、易懂。
4. 可以使用更加严谨的类型检查和异常处理,以提高代码的健壮性和可维护性。
下面是优化后的代码:
public async Task<pms_plan> UpdateOrder(string plaSsn, string direction)
{
if (string.IsNullOrEmpty(plaSsn) || string.IsNullOrEmpty(direction))
{
return null;
}
using (var tran = await _sqlSugarClient.Ado.BeginTranAsync())
{
try
{
var plsn = await _sqlSugarClient.Queryable<pms_plan>().FirstAsync(s => s.sn == plaSsn);
if (plsn == null)
{
return null;
}
var PendingList = await _sqlSugarClient.Queryable<pms_plan>()
.OrderBy(it => new { it.plan_date, it.list_order })
.ToListAsync();
int inden = PendingList.FindIndex(i => i.sn == plsn.sn);
if (direction == "up")
{
if (inden > )
{
var plan1 = PendingList[inden - 1];
int i = (int)plan1.list_order!;
plan1.list_order = plsn.list_order;
plsn.list_order = i;
await _sqlSugarClient.Updateable(plan1).WhereColumns(it => new { it.id }).ExecuteCommandAsync();
}
}
else if (direction == "down")
{
if (inden < PendingList.Count - 1)
{
var plan1 = PendingList[inden + 1];
int i = (int)plan1.list_order!;
plan1.list_order = plsn.list_order;
plsn.list_order = i;
await _sqlSugarClient.Updateable(plan1).WhereColumns(it => new { it.id }).ExecuteCommandAsync();
}
}
await _sqlSugarClient.Updateable(plsn).WhereColumns(it => new { it.id }).ExecuteCommandAsync();
await tran.CommitAsync();
return plsn;
}
catch (Exception ex)
{
await tran.RollbackAsync();
throw ex;
}
}
}
List<DfmeaDataModel> dfList = new List<DfmeaDataModel>(); var import = ObjectMapper.Map<DfmeaDto, DfmeaDataModel>(input); import.CreateTime = DateTime.Now; import.CreateId = _femaAuth.CurrentUserGuid; dfList.Add(import); var df = await _dfmeaDataRepository.GetDfmeaDataModelsAfterSortIdAsync(input.FemaId, input.Sort); await _dfmeaDataRepository.DeleteManyAsync(df); var dfs = await _dfmeaDataRepository.GetDfmeaDataModelsAfterSortIdAsync(input.FemaId, input.Sort); foreach (var item in df) { item.Sort++; dfList.Add(item); } await _dfmeaDataRepository.InsertManyAsync(dfList);这里dfs任然显示能查到数据
根据你提供的代码,可能是因为在删除完数据之后,获取 `dfs` 的代码没有等待删除操作完成,导致查询到的数据仍然存在。你可以将删除操作和查询操作都放在同一个事务中,确保删除操作完成后再进行查询,可以避免这种问题。以下是修改后的代码示例:
```csharp
public async Task UpdateDfmeaDataAsync(DfmeaDto input)
{
using (var uow = _unitOfWorkManager.Begin())
{
List<DfmeaDataModel> dfList = new List<DfmeaDataModel>();
var import = ObjectMapper.Map<DfmeaDto, DfmeaDataModel>(input);
import.CreateTime = DateTime.Now;
import.CreateId = _femaAuth.CurrentUserGuid;
dfList.Add(import);
var df = await _dfmeaDataRepository.GetDfmeaDataModelsAfterSortIdAsync(input.FemaId, input.Sort);
await _dfmeaDataRepository.DeleteManyAsync(df);
foreach (var item in df)
{
item.Sort++;
dfList.Add(item);
}
await _dfmeaDataRepository.InsertManyAsync(dfList);
await uow.CompleteAsync();
var dfs = await _dfmeaDataRepository.GetDfmeaDataModelsAfterSortIdAsync(input.FemaId, input.Sort);
// 使用 dfs 进行下一步操作
}
}
```
在上述代码中,我们使用了 using 语句块来创建一个新的工作单元,并在 using 语句块结束时自动提交事务。这样可以确保删除操作的生效,并且确保删除操作完成后再进行查询。