sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

C#进行IN条件查询的SQL语句使用SqlParameter的通用方法

  • 创建对象
    public class SqlParameterInfo
    {
        /// <summary>
        /// 变量字符串
        /// </summary>
        public string ParameterStr { get; set; }
        /// <summary>
        /// 参数数组
        /// </summary>
        public SqlParameter[] ParameterArr { get; set; }
    }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 通用方法
     /// <summary>
        /// 构建参数信息
        /// </summary>
        /// <param name="sgin">参数头名称</param>
        /// <param name="valArr">参数值数组</param>
        /// <param name="parameters">已存在的参数数组</param>
        /// <returns></returns>
        public static SqlParameterInfo BuildParameterInfoByObj(string sgin, object[] valArr, SqlParameter[] parameters)
        {
            if (string.IsNullOrEmpty(sgin))
            {
                sgin = "tmpParameter" + new Random().Next(1, 100);
            }
            if (valArr==null||valArr.Length==0)
            {
                return new SqlParameterInfo() { ParameterStr = string.Empty, ParameterArr = parameters };
            }
            StringBuilder builder = new StringBuilder();
            var parameterList = new List<SqlParameter>();
            if (parameters!=null&& parameters.Length>0)
            {
                parameterList.AddRange(parameters);
            }
            for (int i = 0; i < valArr.Length; i++)
            {
                builder.Append($"@{sgin}{i},");
                parameterList.Add(new SqlParameter($"@{sgin}{i}",valArr[i]));
            }
            return new SqlParameterInfo() { ParameterStr = builder.ToString().TrimEnd(','),ParameterArr=parameterList.ToArray() };
        }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 调用方法Demo
        public object Test()
        {
            using (Test entities = new Test())
            {
                var parameterValArr = new object[] { "IT部", "人力资源行政部", "财务部" };
                var parameterValArr2 = new object[] { 1, 5, 6 };
                var parameterResult = MsSqlHelper.BuildParameterInfoByObj("Dep", parameterValArr, null);
                var parameterResult2 = MsSqlHelper.BuildParameterInfoByObj("Id", parameterValArr2, parameterResult.ParameterArr);
                string sql = $"SELECT DepCode,DepName FROM Test WHERE DepName IN({parameterResult.ParameterStr}) AND Id IN ({parameterResult2.ParameterStr})";
                var result = entities.Database.SqlQuery<Test>(sql, parameterResult2.ParameterArr).ToList();
                return result;
            }
        }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

 

https://blog.51cto.com/u_15064628/4335703
posted on 2022-04-18 21:43  sunny123456  阅读(694)  评论(0编辑  收藏  举报