public override async Task <List <long> > SelectIds(Expression <Func <T, bool> > @where, bool isIncludeDeleted = false) { var sb = new StringBuilder(); sb.Append($"{SQLConstants.SELECT} {_sqlConstants.IdFieldName}{Environment.NewLine}"); sb.Append($"{SQLConstants.FROM} {_sqlConstants.TableFullName}{Environment.NewLine}"); if (isIncludeDeleted) { sb.Append($"{SQLConstants.WHERE} {_entityUtils.GetFieldNameFromPropertyName(nameof(BaseEntity.IsDeleted))} = true"); } else { sb.Append($"{SQLConstants.WHERE} {_entityUtils.GetFieldNameFromPropertyName(nameof(BaseEntity.IsDeleted))} = false"); } var parameters = new List <NpgsqlParameter>(); if (where != null) { var prmDictionary = new Dictionary <string, DbParameterInfo>(); var conditions = _expressionUtils.GetConditions(where.Body, prmDictionary); AddToParameters(parameters, prmDictionary); sb.Append($" AND {conditions}"); } var result = await SQLExecutor.ExecuteSqlReturningList <long>(sb.ToString(), parameters); return(result); }