0

这不是世界上最重要的问题,实际上这是我在工作日结束时给自己设定的一个小挑战。

基本上,我已经将标准函数转换为 Lambda,但不能用进一步的 Remove 语句完全替换扩展。那么任何热衷于 VB 中的 Lambda 的人都可以解释一下我该怎么做吗?

 Property Inquery As Func(Of List(Of Integer), String) = Function(x) x.Aggregate("IN(", Function(current, id) current & (id & ",")).ToString.qtrim

<Extension()>
Function qTrim(str As String)
    qTrim = str.Remove(str.Length - 1, 1) & ")"
End Function

由于 Meta-Knight 很友好地为我提供了一个很好的答案,我认为包含我现在使用的版本是公平的,如果他们想要的话,可以为其他人包含三元 if 语句:)

  Property Inquery As Func(Of List(Of Integer), String) = Function(intList) If(intList.count > 0, "IN(" & String.Join(",", intList) & ")", "-1")
4

1 回答 1

2

我建议你使用更简单的String.Join方法:

Property Inquery As Func(Of List(Of Integer), String) = Function(intList) "IN(" & String.Join(",", intList) & ")"

使用包含数字 1 到 5 的列表,我得到以下输出:

输入(1,2,3,4,5)

于 2012-12-20T21:30:20.063 回答