我想把这个挑战引起stackoverflow社区的注意.原始问题和答案在这里.顺便说一句,如果你之前没有按照它,你应该尝试阅读Eric的博客,这是纯粹的智慧.
摘要:
编写一个带有非null IEnumerable的函数,并返回一个具有以下特征的字符串:
你甚至可以看到我们自己的Jon Skeet(是的,众所周知,他可以同时在两个地方)发布了一个解决方案,但他的(恕我直言)并不是最优雅的,尽管你可能无法击败它性能.
你怎么看?那里有很好的选择.我真的很喜欢其中一种涉及选择和聚合方法的解决方案(来自Fernando Nicolet).Linq非常强大,并且花了一些时间来应对这样的挑战让你学到很多东西.我扭曲了一下,所以它更高效一点(通过使用Count并避免反向):
public static string CommaQuibbling(IEnumerable<string> items)
{
int last = items.Count() - 1;
Func<int, string> getSeparator = (i) => i == 0 ? string.Empty : (i == last ? " and " : ", ");
string answer = string.Empty;
return "{" + items.Select((s, i) => new { Index = i, Value = s })
.Aggregate(answer, (s, a) => s + getSeparator(a.Index) + a.Value) + "}"; …Run Code Online (Sandbox Code Playgroud) 我有一个如下的SQL语句:
...
const string sql = @"UPDATE PLATYPUS
SET DUCKBILLID = :NEWDUCKBILLID
WHERE PLATYPUSID IN (:ListOfInts)";
...
ocmd.Parameters.Add("ListOfInts", ??WhatNow??);
Run Code Online (Sandbox Code Playgroud)
如何提供逗号分隔的整数列表,可以是任何(合理的*)数量的值
我有一个List<int>可以包含1到n值的值.
让我们说它们是四个整数{3,11,108,32}
我需要将整数列表构造成这样的字符串
(3,11,108,32) - 即.逗号分隔
我意识到这是非常微不足道的,但我正在寻找最有效的解决方案.
例如,如果您只有一个项目,则字符串中不应该有逗号,但应该存在所有其他项目之间.