小编Svi*_*ish的帖子

C#:如何使用Enumerable.Aggregate方法

让我说我有这个截肢Person课:

class Person
{
    public int Age { get; set; }
    public string Country { get; set; }

    public int SOReputation { get; set; }
    public TimeSpan TimeSpentOnSO { get; set; }

    ...
}
Run Code Online (Sandbox Code Playgroud)

然后,我可以分组AgeCountry喜欢这样:

    var groups = aListOfPeople.GroupBy(x => new { x.Country, x.Age });
Run Code Online (Sandbox Code Playgroud)

然后我可以输出所有组的声誉总数如下:

foreach(var g in groups)
    Console.WriteLine("{0}, {1}:{2}", 
        g.Key.Country, 
        g.Key.Age, 
        g.Sum(x => x.SOReputation));
Run Code Online (Sandbox Code Playgroud)

我的问题是,我怎样才能得到一笔TimeSpentOnSO房产?该Sum方法在这种情况下不起作用,因为它仅用于int此类.我以为我可以使用该Aggregate方法,但只是认真无法弄清楚如何使用它...我正在尝试各种组合的各种属性和类型,但编译器只是不会识别它.

foreach(var g in groups)
    Console.WriteLine("{0}, {1}:{2}", 
        g.Key.Country, 
        g.Key.Age, …
Run Code Online (Sandbox Code Playgroud)

c# time aggregate

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

C#:如何实现智能缓存

我有一些地方可以实现某种缓存.例如,在基于自定义字符串执行资源查找的情况下,使用反射查找属性的名称,或者PropertyChangedEventArgs每个属性名称只有一个.

最后一个简单的例子:

public static class Cache
{
    private static Dictionary<string, PropertyChangedEventArgs> cache;
    static Cache()
    {
        cache = new Dictionary<string, PropertyChangedEventArgs>();
    }
    public static PropertyChangedEventArgs GetPropertyChangedEventArgs(
        string propertyName)
    {
        if (cache.ContainsKey(propertyName))
            return cache[propertyName];

        return cache[propertyName] = new PropertyChangedEventArgs(propertyName);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,这会有效吗?例如,如果我们有一大堆不同的propertyNames,那就意味着我们最终会有一个巨大的缓存,从来没有被垃圾收集或任何东西.我在想如果缓存的内容是更大的值,如果应用程序是一个长期运行的应用程序,这可能最终会成为一个问题......或者你怎么看?如何实现好的缓存?这个对大多数用途来说是否足够好?一些不太好理解的高级缓存实现的例子,或者实现起来太复杂了?

c# performance resources caching memory-management

19
推荐指数
3
解决办法
4万
查看次数

VS2008:为解决方案存储的启动项目设置在哪里?

当我在解决方案资源管理器中右键单击我的解决方案并选择属性时,我会出现一个对话框,我可以在其中选择启动项目.

我有时选择当前选择(如果它是一个实验性的解决方案,我之间跳过很多项目),但大多数情况下它是选择的单个启动项目,通常是主要的WinForms应用程序或控制台应用程序.

我的问题是每当我使用tfpt命令(Team Foundation Power Tools 2008)进行树清理时,这个设置就会被遗忘.因此,当我下次尝试运行我的解决方案时,它违反了一些随机项目,并且我收到一条错误,指出我无法运行类库或类似的东西.这当然是显而易见的.但这个设置存储在哪里?当我做树干时,为什么会忘记它?解决方案文件仍然存在,对吧?是不是存储了解决方案属性?

projects-and-solutions properties visual-studio-2008

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

MySQL:如何检查字符串是否为有效的DATE,TIME或DATETIME

当我尝试将值放入无效的DATE字段时,MySQL似乎使用了0000-00-00.有没有办法在没有更新DATE字段的情况下"检查"?并从例如PHP做到这一点?

比如,有没有办法可以查询MySQL服务器并询问"嘿,这个DATE,TIME或DATETIME对你有效吗?"

或者是否有更好的方法呢?

php mysql validation datetime

19
推荐指数
4
解决办法
6万
查看次数

MySQL:如果不存在则添加约束

在我的数据库创建脚本中创建脚本,如下所示:

CREATE TABLE IF NOT EXISTS `rabbits`
(
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(255) NOT NULL,
    `main_page_id` INT UNSIGNED COMMENT 'What page is the main one',
    PRIMARY KEY (`id`),
    KEY `main_page_id` (`main_page_id`)
)
ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS `rabbit_pages`
(
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
    `rabbit_id` INT UNSIGNED NOT NULL,
    `title` VARCHAR(255) NOT NULL,
    `content` TEXT NOT NULL,
    PRIMARY KEY (`id`),
    KEY `rabbit_id` (`rabbit_id`),
    CONSTRAINT `fk_rabbits_pages` FOREIGN KEY (`rabbit_id`) REFERENCES `rabbits` (`id`)
)
ENGINE=InnoDB;

ALTER TABLE …
Run Code Online (Sandbox Code Playgroud)

mysql constraints

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

iCalendar格式的CREATED和DTSTAMP有什么区别?

iCalendar规范中,我找到以下有关DTSTAMP的信息:

此属性与"CREATED"和"LAST-MODIFIED"属性不同.这两个属性用于指定日历存储中的特定日历数据何时创建和上次修改.这与创建或最后修改日历服务信息的iCalendar对象表示时不同.

那是什么意思?我将事件存储在数据库中,并希望生成iCal文件.我假设CREATED应该设置为每当创建事件时,但我应该将DTSTAMP设置为什么?

icalendar

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

Sum()导致异常,而不是在没有行时返回0

我有这个代码(好吧,我没有,但类似的东西:p)

    var dogs = Dogs.Select(ø => new Row
    {
            Name = ø.Name,
            WeightOfNiceCats = ø.Owner
              .Cats
              .Where(æ => !æ.Annoying)
              .Sum(æ => æ.Weight),
    });
Run Code Online (Sandbox Code Playgroud)

在这里,我通过所有的狗,并总结所有不讨厌的猫的重量(进入一个不可空的小数),与猫拥有相同的所有者.当然,几乎所有的猫都很烦,所以我得到这个错误:

无法将null值分配给类型为System.Decimal的成员,该成员是非可空值类型.

使用的字段或外键都不能为空.因此,当Where子句没有返回猫时会发生错误,而这通常会发生.但是我该如何解决这个问题呢?当发生这种情况时,我希望它返回0.试过DefaultIfEmpty()后面的Where条款,但后来我得到这个错误:

你调用的对象是空的.

我猜这是可以理解的.我试图添加一个??Sum,但由于这个错误它不会编译:

接线员'??' 不能应用于'decimal'和'decimal'类型的操作数

这当然也是有道理的.那我该怎么办?如果Sum事情只是在没有任何要求的情况下返回0 就会很好.或某种SumOrZero声明.制作一个适用SumOrZero于Linq2SQL 的方法会不会很难?

c# nullreferenceexception linq-to-sql

18
推荐指数
2
解决办法
6040
查看次数

如何使用XML文档文件

  1. 使用XML文档文件附带的外部程序集时,如何让visual studio找到它?

  2. 有XML文档文件时,是否有一个程序或xml转换文件或者我可以用来以一种很好的方式查看它的东西?不一定像msdn文档查看器那样复杂,但至少比纯xml更好...

.net xml-documentation visual-studio-2008

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

TFS:合并回主分支

我们有一个Current分支,主要开发发生在那里.有一段时间,我一直在一个单独的分支中进行某种实验.换句话说,我将我需要的东西从Current分支分支到实验分支.在工作的同时,我经常将Current合并到实验中,以便我有其他人所做的更改,这样我就可以确定我的更改是如何工作的.

我现在想要合并回Current.首先,我将Current合并到实验中,编译并确保一切正常.所以在我的脑海中,实验和当前应该"同步".但是当我尝试将实验合并回Current时,我得到了一大堆冲突.但我认为当我将Current合并到实验中时,我已经解决了这些问题.

到底是怎么回事?我完全误解了什么吗?我怎样才能顺利完成这项工作?真的不想经历所有这些冲突......

merge tfs branch

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

jquery:Flash消息

使用jQuery,如何以简单的方式在页面顶部显示flash消息?有没有内置的东西,或插件,或者它是否足够容易自己做?

我的意思是,在成功的ajax帖子之后,我想以一种非突兀的方式说"嘿,它变得很好".

jquery messagebox

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