小编Ste*_*ers的帖子

循环中哪个更快:调用属性两次,或者存储属性一次?

这更像是一个关于性能的学术问题,而不是一个现实的"我应该使用什么",但我很好奇,因为我根本不涉及IL,看看是什么构造的,我手边没有大数据集.反对.

那么哪个更快:

List<myObject> objs = SomeHowGetList();
List<string> strings = new List<string>();
foreach (MyObject o in objs)
{
    if (o.Field == "something")
        strings.Add(o.Field);
}
Run Code Online (Sandbox Code Playgroud)

要么:

List<myObject> objs = SomeHowGetList();
List<string> strings = new List<string>();
string s;
foreach (MyObject o in objs)
{
    s = o.Field;
    if (s == "something")
        strings.Add(s);
}
Run Code Online (Sandbox Code Playgroud)

请记住,我真的不想知道string.Add(s)的性能影响(因为无论需要做什么操作都无法真正改变),只是设置每次迭代之间的性能差异(让我们看看)假设s可以是任何原始类型或字符串)每次迭代时调用对象上的getter.

c# performance

5
推荐指数
2
解决办法
335
查看次数

Tortoise不会连接到subversion服务器

我正在尝试使用Subversion repo设置我的家庭服务器(经过一些更改).

我在Windows Server 2003服务器上卸载了重新安装的VisualSVN Server,并且回购的地址(即URL)是https://server.network.local/svn/.

我可以通过IE浏览到该地址,并获取存储库列表(我必须点击过去的证书错误),但当我指向它时,我得到它

OPTIONS of 'https://server.network.local/svn': Could not resolve hostname
'server.network.local': No such host is known.
(https://server.network.local)
Run Code Online (Sandbox Code Playgroud)

我可以ping和tracert到服务器没有问题,所以我不知道这笔交易是什么.

svn tortoisesvn visualsvn-server

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

PowerShell:位置参数和 ValueFromPipeline

我有一个玩具问题,感觉应该很简单。我想要一个像 Join-Path 这样支持管道的函数。称之为构建路径。因此,这些语句(这是我的测试 1-4)应该是等效的:

Get-Location | Build-Path Test

Get-Location | Build-Path -Right Test

Build-Path -Left (Get-Location) -Right Test

Build-Path (Get-Location) Test
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多方法,最接近的是我可以获得这两个函数(互斥):

A:对这两个价值观都有明确的立场;测试 1 失败

function Build-Path
(
    [Parameter(Mandatory=$true, Position=0, ValueFromPipeline=$true)]
    [String] $Left, 
    [Parameter(Mandatory=$true, Position=1)]
    [String] $Right
)
{
    Join-Path $Left $Right
}
Run Code Online (Sandbox Code Playgroud)

B:管道参数上无位置,Right位置为0;测试 4 失败

function Build-Path
(
    [Parameter(Mandatory=$true, ValueFromPipeline=$true)]
    [String] $Left, 
    [Parameter(Mandatory=$true, Position=0)]
    [String] $Right
)
{
    Join-Path $Left $Right
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试以多种方式使用 ParameterSets(没有保存我的尝试),但没有成功,我现在有点困惑。

想法?

powershell

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

在mysql中尝试跨数据库更新时找不到列

我正在尝试将一个mysql数据库中的列的内容复制到另一个mysql数据库中的相同表.

我正在使用:

UPDATE db1.table
SET    db1.table.name = db2.table.name, 
       db1.table.address = db2.table.address
WHERE  db1.table.id = db2.table.id;
Run Code Online (Sandbox Code Playgroud)

我收到错误1054:'where子句'中的未知列'db2.table.id'.

两个表都有一个id列,所以我不确定它为什么不起作用.我以管理员身份登录,并拥有两个数据库的完全权限.

mysql sql mysql-error-1054 sql-update

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

DataBinding到只读属性

是否可以将字段(文本框)绑定到未实现集合的Property?

例如,我有一个实现带有3个字段的INotifyPropertyChanged的对象:

public decimal SubTotal
{
    get { return this.subTotal; }
    set 
    {
        this.subTotal = value;
        this.NotifyPropertyChanged("SubTotal");
        this.NotifyPropertyChanged("Tax");
        this.NotifyPropertyChanged("Total");
    }
}

public decimal Tax 
{
    get { return this.taxCalculator.Calculate(this.SubTotal, this.Region); }
}

public decimal Total
{
    get { return this.SubTotal + this.Tax; }
}
Run Code Online (Sandbox Code Playgroud)

我还没有完全测试这个,因为没有制作UI,并且在它运行之前还有很多其他工作需要在这个类中完成,但是这可能是我拥有它的方式,还是有不同的方式?

c# data-binding properties inotifypropertychanged winforms

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

在mysql sql where子句中类似于MAX的东西

我正在尝试编写一个sql函数来执行以下操作:

SELECT
    person.id, 
    person.phonenumber
FROM
    person INNER JOIN activity ON person.id = activity.personid
WHERE
    MAX(activity.activitydate) < DATE_SUB(CURDATE(), INTERAVAL 180 DAY);
Run Code Online (Sandbox Code Playgroud)

每次联系一个人时,我们都会为他们创建一个带有笔记等的活动记录.所以我正在寻找在过去180天内没有联系过的所有人.显然,这不起作用,因为max不能在where子句中使用.

我看到了这个,但是mysql没有with语句.

另外,我试过了

SELECT 
    person.id, 
    person.phonenumber, 
    MAX(activity.activitydate) as ndate
FROM 
    person INNER JOIN activity ON person.id = activity.personid
WHERE 
    ndate < DATE_SUB(CURDATE(), INTERVAL 180 DAY)
GROUP BY person.id;
Run Code Online (Sandbox Code Playgroud)

但ndate不得而知.

知道我是怎么做的吗?

mysql sql

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

SQL - 如何在给定select的结果的情况下批量更新

我有一个select语句,它连接几个表并获取一些信息.我想用select中包含的信息更新其中一个表(在select中找到)的所有记录.选择如下:

SELECT  account.id
        document.id
FROM    customer INNER JOIN account ON
            (customer.firstname = account.firstname AND 
            customer.lastname = account.lastname AND
            customer.phone = account.phone)
        INNER JOIN document ON
            customer.id = document.customerid
WHERE   document.accountid IS NULL;
Run Code Online (Sandbox Code Playgroud)

在英语中,文档可以属于客户和帐户.我正在寻找与客户记录匹配的帐户记录,其中文档属于客户,而不是帐户.

现在,我可以手动完成结果并运行:

UPDATE  document
SET     accountid = /*account.id*/
WHERE   id = /*document.id*/;
Run Code Online (Sandbox Code Playgroud)

它可以按照我的意愿运行,但是有大量的记录符合我的查询,如果可以的话,我想在一个声明中完成.

mysql sql

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

重新部署WCF服务时是否必须重新启动IIS?

假设服务正在运行并且正在使用中,并且您没有更改合同或任何内容 - 只是一些基础逻辑.将服务发布到IIS后,是否必须重新启动IIS?

(如果重要,InstanceContextMode是Single)

有没有你需要/不需要的情况?

deployment wcf iis-6

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

自定义属性在编译时执行

我正在尝试创建一个自定义属性,它将以一种AOP方式工作(我无法访问postharp,不幸的是,我对Unity不是很熟悉).它有AttributeUsage.Method,并在其构造函数中配置测试环境的某些部分(从app.config中提取一些信息并调用一些配置环境的exes).

它的工作原理,除了现在,当我构建解决方案时,属性被执行 - 这是不可取的.

有没有办法创建一个不在编译时执行的自定义属性?

编辑>我想一个示例用法可能会有所帮助:

public void Scenario1Tests
{
    [Test]
    [Environment(Environments.A)]
    public void Scenario1TestA()
    {
        Assert.Something();
    }

    [Test]
    [Environment(Environments.Any)]
    public void Scenario1TestB()
    {
        Assert.SomethingElse();
    }
}

// Most tests will be written environment independent, some must not
public enum Environments
{
    A, 
    B, 
    Any
};

[AtrributeUsage(AttributeTargets.Method)]
public void Environment : Attribute
{
    public Environment(Environments env)
    {
        // lots of test can have this attribute, requirement is 
        // that it is only configured once as it is a lengthy configuration …
Run Code Online (Sandbox Code Playgroud)

c# aop custom-attributes

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

将Visual Studio附加到一个短暂的过程

我有一个控制台应用程序,它很快就会死掉,并且在检查代码后,我无法确切知道死掉的位置(我基本上将其缩小到10行半径),以便进一步调试它。

由于我不愿讨论的原因,我无法从VS执行该过程(尽管我具有二进制文件,源代码和pdbs,但是我无法在构建服务器的环境之外进行构建),并且想要附加到流程...但是当我开始流程时,它死的时间比我希望刷新“ 附加到流程”对话框的时间要早得多。

有想法吗?

.net-4.0 attach-to-process visual-studio-2012 windows-server-2012

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