相关疑难解决方法(0)

String.Join vs. StringBuilder:哪个更快?

之前关于格式化double[][]为CSV格式的问题中,Marc Gravell 表示使用StringBuilder将比使用更快String.Join.这是真的?

.net string performance stringbuilder

73
推荐指数
4
解决办法
5万
查看次数

Eric Lippert挑战"逗号 - 狡辩",最佳答案?

我想把这个挑战引起stackoverflow社区的注意.原始问题和答案在这里.顺便说一句,如果你之前没有按照它,你应该尝试阅读Eric的博客,这是纯粹的智慧.

摘要:

编写一个带有非null IEnumerable的函数,并返回一个具有以下特征的字符串:

  1. 如果序列为空,则生成的字符串为"{}".
  2. 如果序列是单个项"ABC",则结果字符串是"{ABC}".
  3. 如果序列是两个项目序列"ABC","DEF",则结果字符串是"{ABC和DEF}".
  4. 如果序列具有两个以上的项目,例如"ABC","DEF","G","H",则结果字符串为"{ABC,DEF,G和H}".(注意:没有牛津逗号!)

你甚至可以看到我们自己的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)

c# puzzle programming-languages

23
推荐指数
3
解决办法
4285
查看次数

如何为SQL参数提供List <int>?

我有一个如下的SQL语句:

...
const string sql = @"UPDATE PLATYPUS
SET DUCKBILLID = :NEWDUCKBILLID
WHERE PLATYPUSID IN (:ListOfInts)";
...
ocmd.Parameters.Add("ListOfInts", ??WhatNow??);
Run Code Online (Sandbox Code Playgroud)

如何提供逗号分隔的整数列表,可以是任何(合理的*)数量的值

  • 在这种情况下,"合理"是指一到十几个.

c# sql winforms

18
推荐指数
3
解决办法
4万
查看次数

给定List <int>如何创建逗号分隔的字符串?

给定List <int>如何创建逗号分隔的字符串?

c#

14
推荐指数
1
解决办法
3320
查看次数

将List <int>拆分为字符串的有效方法

我有一个List<int>可以包含1到n值的值.

让我们说它们是四个整数{3,11,108,32} 我需要将整数列表构造成这样的字符串

(3,11,108,32) - 即.逗号分隔

我意识到这是非常微不足道的,但我正在寻找最有效的解决方案.

例如,如果您只有一个项目,则字符串中不应该有逗号,但应该存在所有其他项目之间.

c#

-2
推荐指数
1
解决办法
70
查看次数