sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1796 随笔 :: 22 文章 :: 24 评论 :: 226万 阅读
< 2025年3月 >
23 24 25 26 27 28 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 31 1 2 3 4 5

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   sunny123456  阅读(746)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示