小编MMi*_*ind的帖子

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
查看次数

Web服务超时的最佳实践

是否有任何文章/书定义了WS超时的上限设计限制?您是在服务器超时还是推荐客户端特定的超时?

是否存在一种常见的最佳实践,例如"从不设计可能需要超过60秒的WS,使用异步令牌模式"

我有兴趣知道你做了什么或你的意见.

wcf web-services timeout scalability

13
推荐指数
2
解决办法
2万
查看次数

.NET 4的条件编译

可能重复:
C#条件编译和框架目标

我有一些代码在.NET 4中工作,但在.NET 3.5中不起作用,在.NET 3.5中它需要使用对Windows的互操作调用.

我想在两种情况下使用"ifdef"来使用不同的代码路径(最终我将弃用.NET 3.5代码).

是否有预定义的指令值来确定何时使用.NET4编译代码?是否有与所有预定义指令(DEBUG,TRACE,...)的良好链接?以下链接仅提供指令,但不提供标准预定义值:

http://msdn.microsoft.com/en-us/library/ed8yd1ha(v=VS.100).aspx

c# conditional-compilation .net-4.0 conditional-statements

9
推荐指数
2
解决办法
9883
查看次数

你能在Silverlight中动态编译代码吗?

我应该澄清一下,我正在寻找一个客户端解决方案.

或者,是否有一个用托管代码编写的C#编译器?

.net compiler-construction silverlight

6
推荐指数
1
解决办法
1933
查看次数

MongoDB高级查询:获取匹配第二个条件的数组中的元素

我们有一组具有以下结构的元素:

内容:

{
id : 123,
items : [ { color: "blue", "groups" : [3, 5] }, { color: "red", "groups" : [6, 8] } ]
}

{
id : 124,
items : [ { color: "blue", "groups" : [1, 2] }, { color: "green", "groups" : [5, 9] } ]
}
Run Code Online (Sandbox Code Playgroud)

我们想要一种有效的方法来获取具有颜色为蓝色的项目的元素可以访问组5,9,27,123或56.这应该返回ID为123的元素,但不返回ID为124的元素,因为item必须满足这两个条件.我们希望查询尽可能高效.

此查询有效但不符合要求:

{$and : { "items.groups" : { $in : [5, 9, 27, 123, 56] }, "items.color" : "blue" }} 
Run Code Online (Sandbox Code Playgroud)

它会匹配,id = 124因为它有一个匹配"蓝色"的项目和另一个匹配组9的项目.

mongodb

6
推荐指数
1
解决办法
5149
查看次数

Mongoose 将 Number 插入为 Int32 或 double,如何强制始终使用 double,就像 shell 一样

当字段的类型为 Number 时,mongoose 会将其插入为 Int32 或 double,具体取决于实际值:

5 -> Int32 5.3 -> 双精度

实际上,根据插入的实体,同一字段具有不同的类型。

从 javascript 读取/写入这不是问题,因为两者都转换为数字。但是,如果您同时使用来自两种类型的强类型语言(例如 C#)的驱动程序,这就会成为一个问题。

是否可以将 mongoose 配置为始终将数字插入双精度,就像 mongo shell 那样?

mongoose mongodb

6
推荐指数
1
解决办法
3214
查看次数

使用LINQ订购两个不同的C#列表

我有两种不同的C#(3.5)类型.我不控制它们,所以我不能让它们从常见类型继承或实现接口.但它们在"形状"上非常相似:

class A
{
string Name
string Data
}

class B
{
string Title
string OtherStuff
}

class C
{
string ID
string ExtendedData
}

List< A > myAList
List< B > myBList
Run Code Online (Sandbox Code Playgroud)

我想用LINQ查询执行以下操作:

返回列表中的所有元素myAList,并myBList通过命令NameTitle(不论适用)的结果必然是List< C >其中ID = NameTitleExtendedData = DataOtherStuff

思考?

c# linq

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