从 C# 中的列表创建逗号分隔列表而不终止逗号

Posted

技术标签:

【中文标题】从 C# 中的列表创建逗号分隔列表而不终止逗号【英文标题】:Creating comma separated list from a list in c# without terminating comma 【发布时间】:2014-01-07 07:26:10 【问题描述】:

我有一个列表,我想在 C# 中的 IN 语句中使用它的成员。使用string.Join 在不需要的列表末尾插入一个逗号。我该怎么办?

 string sql = string.Format(@"SELECT I.ItemId FROM POS.Item I WHERE
I.Code IN (0)", string.Join(",", code.ToArray()));

【问题讨论】:

在代码变量中显示数据。那不是加入的行为。加入不放,到底 String.Join 不会在结果末尾添加separator。您的代码一定有不同的问题。 你有一个空字符串(或.ToStrings 的东西) - 或null - 在code @BenAllred:你是对的!!!我有一个空字符串,我没有考虑它 @fasadat:我刚刚从中创建了一个答案。 【参考方案1】:

code 中可以有一个空字符串或 null。

看看这个:

string joined = string.Join(",", new string[]  "asdf", "qwer", "" );
Console.WriteLine(joined);

string joined = string.Join(",", new string[]  "asdf", "qwer", null );
Console.WriteLine(joined);

两者都给出:

asdf,qwer,

【讨论】:

【参考方案2】:

您的列表中必须有空字符串,这就是为什么它会在字符串末尾添加额外的逗号,否则 string.Join 将永远不会添加额外的逗号。如果是这种情况,那么您应该通过 TrimEnd() 函数删除多余的逗号,例如

string sql = string.Format(@"SELECT I.ItemId FROM POS.Item I WHERE
I.Code IN (0)", string.Join(",", code.ToArray()).TrimEnd(','));

【讨论】:

以上是关于从 C# 中的列表创建逗号分隔列表而不终止逗号的主要内容,如果未能解决你的问题,请参考以下文章

如何从 SQL CE 中的表中构建逗号分隔列表?

数组中的逗号分隔列表

jQuery中的逗号分隔列表

如何从 JQuery 中的逗号分隔值列表中绑定 <select>?

如何分隔逗号分隔的列表

如何通过 Oracle 中的 regexp_replace 从逗号分隔列表中删除重复项?