为了账号安全,请及时绑定邮箱和手机立即绑定

在 C# 中的字符串中的每个值中放置单引号

在 C# 中的字符串中的每个值中放置单引号

C#
天涯尽头无女友 2022-12-31 11:27:26
我试图在用逗号分隔的字符串中的每个值中加上单引号,以将其包含在 SQL 查询中(例如。"AND STAT IN ('11', '12')如果您有任何想法,请帮助我。样本数据:string sStatus = "10,20,30,40";我已经尝试拆分每个值。if (!String.IsNullOrEmpty(sStatus))        {            string[] sStatList = sStatus.Split(',');            foreach (string p in sStatList)            {            }            sFilter = String.Format(" AND STAT IN ({0})", sStatList);        }
查看完整描述

4 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

你可以使用Select()

string[] sStatList = sStatus.Split(',');
var res = string.Join(",", sStatList.Select(s => $"'{s}'"));

这需要using System.Linq;


查看完整回答
反对 回复 2022-12-31
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

试试这个:


        string[] sStatList = sStatus.Split(',');

        string sFilter= "";

            foreach (string p in sStatList)

            {

                sFilter = sFilter+ ("'" + p + "',");

            }

        if(sFilter.EndsWith(","))

        {

            sFilter = sFilter.Substring(0,sFilter.Length-1);

        }

        sFilter = " AND STAT IN (" + sFilter + ")";


查看完整回答
反对 回复 2022-12-31
?
守候你守候我

TA贡献1802条经验 获得超10个赞

您可以使用string.Join这样的:


var status = "10,20,30,40";


if (!string.IsNullOrEmpty(status))

{

    var sStatList = status.Split(',');


    filter = $"'{string.Join("','", sStatList)}'";

}

您的另一个选择是使用string.Replace:


var status = "10,20,30,40";

filter = $"'{status.Replace(",","','")}'";

无论哪种方式,您都需要验证输入以避免SQL 注入。考虑以下:


status = "10,20,30');/*,*/ DROP TABLE Users;//";

例如Dapper直接支持这个:}


var sql = "SELECT * FROM table WHERE Id IN @ids"

var results = connection.Query(sql, status.Split(','));

并且有替代的 orms 可以处理参数化。


作为旁注:避免在 C# 中使用匈牙利表示法,因为微软也建议. 您使用前缀指定变量类型的匈牙利表示法是无用的信息并且会增加噪音,尤其是 VS 和 VS Code 无论如何都会告诉您类型。


查看完整回答
反对 回复 2022-12-31
?
侃侃无极

TA贡献2051条经验 获得超10个赞

@oika 的回答是在正确的轨道上,但它不太适合你正在尝试做的事情。然而Select这里的答案是......虽然这样:


您需要添加对以下内容的引用Linq:


using System.Linq;

然后


var sStatuses = sStatus.Split(',');


var parsedsStatuses = string.Join(",", sStatuses.Select(x => $"'{x}'"));

var sql = $"AND STAT IN ({ parsedsStatuses })";

当然,您在执行此操作时要小心,因为它会为SQL Injection.


查看完整回答
反对 回复 2022-12-31
  • 4 回答
  • 0 关注
  • 214 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信