我有一个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教育.
我正在编写一个脚本来导航基于文本的菜单系统,使用python的telnetlib来访问串行连接.
我可以使用转义码快乐地按下F键.例如F9 ="\ 033OX",其中"\ 033"是转义序列.
如何编码"esc"键盘键?我本来期望只是"\ 033",但这似乎不起作用.
我需要从表中删除一些记录,然后将一些记录插入到同一个表中.此删除和插入过程应该在事务中.
以下是我的所作所为.
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)
但是,我想因为删除操作没有在插入之前执行,我得到重复的键错误.有人可以帮忙.
我想组合(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)
谢谢 ))
我在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.branchArtifact Paths配置中的某种字符串操作==编辑==
基于下面的oryades答案(看起来像linux bash命令行),我将其转换为Windows PowerShell,如下所示:
将脚本设置为“源代码”并粘贴以下内容:
$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提供的提示