小编jlb*_*b83的帖子

使用LINQ从字符串列表中提取整数

我有一个List<string>,其中一些字符串是数字.我想将这个子集提取到一个List<int>.

我用相当冗长的方式完成了这个 - 如下所示 - 但我觉得必须有一个更整洁的LINQ方式来构建它.有任何想法吗?

List<string> myStrs = someListFromSomewhere;
List<int> myInts = new List<int>();

foreach (string myStr in myStrs)
{
    int outInt;
    if (int.TryParse(myStr, out outInt))
    {
        myInts.Add(outInt);
    }
}
Run Code Online (Sandbox Code Playgroud)

显然我不需要解决这个问题 - 它主要用于我的LINQ教育.

c# linq list

7
推荐指数
2
解决办法
3362
查看次数

什么是"esc"键盘键本身的VT100转义码

我正在编写一个脚本来导航基于文本的菜单系统,使用python的telnetlib来访问串行连接.

我可以使用转义码快乐地按下F键.例如F9 ="\ 033OX",其中"\ 033"是转义序列.

如何编码"esc"键盘键?我本来期望只是"\ 033",但这似乎不起作用.

python escaping

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

删除不在sql批量插入的事务中工作

我需要从表中删除一些记录,然后将一些记录插入到同一个表中.此删除和插入过程应该在事务中.

以下是我的所作所为.

 using (SqlConnection sqlConn = new SqlConnection(connectionString))
        {
            sqlConn.Open();
            using (SqlTransaction sqlTran = sqlConn.BeginTransaction())
            {
                string deleteQuery = "delete from dbo.MyTable where Col1 =" + colValue;
                SqlCommand sqlComm = new SqlCommand(deleteQuery, sqlConn,sqlTran);
                sqlComm.ExecuteNonQuery();
                using (SqlBulkCopy sqlcopy = new SqlBulkCopy(sqlConn, SqlBulkCopyOptions.Default, sqlTran))
                {
                    sqlcopy.BatchSize = 10;
                    sqlcopy.DestinationTableName = "MyTable";
                    try
                    {
                        sqlcopy.WriteToServer(dsDataSet.Tables[0]);
                        sqlTran.Commit();
                    }
                    catch (Exception ex)
                    {
                        sqlTran.Rollback();
                    }
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

但是,我想因为删除操作没有在插入之前执行,我得到重复的键错误.有人可以帮忙.

c# ado.net transactions sqlbulkcopy sql-server-2008

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

Python按键拉链

我想组合(zip?)两个python的元组列表,但匹配一个键.

例如,我想创建一个带有两个输入列表并生成如下输出的函数:

lst1 = [(0, 1.1), (1, 1.2), (2, 1.3),           (5, 2.5)]
lst2 = [          (1, 4.5), (2, 3.4), (4, 2.3), (5, 3.2)]

desiredOutput = [(1, 1.2, 4.5), (2, 1.3, 3.4), (5, 2.5, 3.2)]
Run Code Online (Sandbox Code Playgroud)

我可以非常混乱和手动循环,但我认为必须有一些itertools/压缩功能,将大大简化这一点.

我确定答案就在那里而且显而易见,我只是没有正确的语法来搜索它.

==

((对于它的价值,这是我天真的解决方案.我希望找到更整洁/更pythonic的东西:

def key_zipper(lst1, lst2):    
    dict1 = dict(lst1)
    dict2 = dict(lst2)

    intersectKeys = [k for k in dict1.keys() if k in dict2.keys()]

    output = []

    for key in intersectKeys:
        output.append((key, dict1[key], dict2[key]))

    return output
Run Code Online (Sandbox Code Playgroud)

谢谢 ))

python list

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

TeamCity在工件zip名称中显示分支

我在TeamCity中建立了一个要构建工件zip文件的构建。

我可以Edit Configuration Settings => General Settings => Artifact Paths用来设置要压缩的文件和zip文件名。

我想使名称更具描述性,TeamCity让我使用参数,例如:

out/mypackagedfiles/** => MyBuild_%build.number%.zip
Run Code Online (Sandbox Code Playgroud)

会给我一个zip文件,例如MyBuild_46.zip

我还想包括构建所基于的分支。这也可以作为TeamCity参数使用,但是它包含一个正斜杠(例如feature/my_great_feature)。因此,如果在Artifact Paths配置中使用此命令,则会得到一个包含zip文件的目录:

out/mypackagedfiles/** => MyBuild_%build.number%_%vcsroot.branch%.zip
Run Code Online (Sandbox Code Playgroud)

给出my_great_feature.zip一个名为的目录MyBuild_46_feature

我想做的是以某种方式从分支名称中删除/替换正斜杠以获得一个zip文件,例如MyBuild_46_feature_my_great_feature.zip

只要分支名称是可识别的,我就不必担心确切的格式。

关于可能存在的想法-但我找不到:

  • 创建一个新参数,该参数从中派生经过清理的分支名称 vcsroot.branch
  • Artifact Paths配置中的某种字符串操作

==编辑==

基于下面的oryades答案(看起来像linux bash命令行),我将其转换为Windows PowerShell,如下所示:

  1. 设置工件以使用%env.branch_name%(这也需要在“参数”选项卡中设置一个临时/虚拟值,以使构建运行)
  2. 创建运行器类型为PowerShell的构建步骤
  3. 将脚本设置为“源代码”并粘贴以下内容:

    $branch_name="%vcsroot.branch%".replace('/','_')
    echo "Sanitised branch for Artifact zip = " $branch_name
    echo "##teamcity[setParameter name='env.branch_name' value='$branch_name']"
    
    Run Code Online (Sandbox Code Playgroud)

请注意,TeamCity允许您替换%vcsroot.branch%-这是在PowerShell运行之前发生的替换。感谢Team City和Power Shell提供的提示

git teamcity branch

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