从 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
。您的代码一定有不同的问题。
你有一个空字符串(或.ToString
s 的东西) - 或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# 中的列表创建逗号分隔列表而不终止逗号的主要内容,如果未能解决你的问题,请参考以下文章