小编Sin*_*ian的帖子

Powershell中的Lambda表达式

我在C#中有一个代码,它使用lambda表达式将委托传递给方法.我如何在PowerShell中实现这一目标.例如,以下是C#代码:

string input = "(,)(;)(:)(!)";
string pattern = @"\((?<val>[\,\!\;\:])\)";
var r = new Regex(pattern);
string result = r.Replace(input, m =>
    {
        if (m.Groups["val"].Value == ";") return "[1]";
        else return "[0]";
    });
Console.WriteLine(result);
Run Code Online (Sandbox Code Playgroud)

这是没有lambda表达式的PowerShell脚本:

$input = "(,)(;)(:)(!)";
$pattern = "\((?<val>[\,\!\;\:])\)";
$r = New-Object System.Text.RegularExpressions.Regex $pattern
$result = $r.Replace($input, "WHAT HERE?")
Write-Host $result
Run Code Online (Sandbox Code Playgroud)

注意:我的问题不是解决这个正则表达式问题.我只想知道如何将lambda表达式传递给在PowerShell中接收委托的方法.

powershell lambda

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

如何执行CTE中生成的查询

我有一个SELECT生成语句的CTE ,但是SQL Server(2012)不允许对其进行调用EXEC。这是查询:

DECLARE @guidToFind uniqueidentifier = 'E4069560-091A-4026-B519-104F1C7693B3';

WITH GuidCols (TableName, ColName, Query) As
(
    SELECT  
        C.TABLE_NAME, 
        C.COLUMN_NAME, 
        'SELECT ' + 
             QUOTENAME(C.TABLE_NAME) + '.' + 
             QUOTENAME(C.COLUMN_NAME) + ' 
        FROM ' + 
             QUOTENAME(C.TABLE_NAME) + ' 
        WHERE ' + 
           QUOTENAME(C.COLUMN_NAME) + ' = ''' + cast(@guidToFind AS VARCHAR(50))+
           ''''
    FROM 
        INFORMATION_SCHEMA.COLUMNS C 
        INNER JOIN INFORMATION_SCHEMA.TABLES T 
        ON C.TABLE_NAME = T.TABLE_NAME AND 
           T.TABLE_TYPE = 'BASE TABLE'
    WHERE 
        C.DATA_TYPE = 'uniqueidentifier'
)
-- SELECT * FROM
EXEC( GuidCols.Query )
Run Code Online (Sandbox Code Playgroud)

如果我 …

sql sql-server common-table-expression

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

C#后增量和前增量

我有时会对速记增量操作感到困惑.

因为当我在BASIC中进行小编程时,我得到了一些如何坚持使用a = a + 1,这是一种长期痛苦的方式,即"获取当前值,为其添加1,然后将新值存储回'.

1] a = a +1 ; 

2] a++ ;

3] ++a;

4] a +=1;
Run Code Online (Sandbox Code Playgroud)

[1]和[4]在功能上有不同的表示法,对吗?

由于增量符号++之前和之后的事实,2]和3]的工作方式完全不同.对?

我可以安全地假设下面的内容吗?

int f(int x){ return x * x;}

y = f(x++) -> for x =2, f(x) = x^2

f(x)     ======> y= 2^2 =4 

x=x+1;   ======> x= 2+1 = 3 



y = f(++x) -> for x =2, f(x) = x^2

x=x+1    ===========> x = 2+1 = 3

f(x)     ===========> y =3^2 = 9
Run Code Online (Sandbox Code Playgroud)

.net c#

4
推荐指数
2
解决办法
6692
查看次数

更改系统范围内所有窗口文本框的渲染机制

我需要编写一个新颖的自定义算法,用于在文本框中处理和渲染从右到左和从左到右的字符串,然后我需要在窗口中创建所有文本框,以使用此算法.

我的问题是关于第二个工作,也就是说,如何更改windows机器中所有文本框的渲染机制?我应该从哪个部分的Win32 API开始?它是某种黑客攻击现有系统dll还是有一些API来做这些事情?

c c++ winapi textbox operating-system

3
推荐指数
1
解决办法
97
查看次数

将变量乘以而不重写它

所以我对"代码世界"相当新,希望有一个相当简单的问题.

txtBox.Text = "x";
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做,所以我能够在txtBox没有完全写出来的情况下看到10个X ?

c#

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