小编Sea*_*son的帖子

LINQ在HashSet上的ForEach?

我很好奇是什么限制必须让设计决定不让HashSet能够使用LINQ的ForEach查询.

这两种实现的幕后实际情况有何不同:

var myHashSet = new HashSet<T>;
foreach( var item in myHashSet ) { do.Stuff(); }
Run Code Online (Sandbox Code Playgroud)

VS

var myHashSet = new HashSet<T>;
myHashSet.ForEach( item => do.Stuff(); }
Run Code Online (Sandbox Code Playgroud)

我(非常)确定这只是因为HashSet没有实现IEnumerable - 但是正常的ForEach循环做什么不同会使HashSet更多地支持它?

谢谢

c# linq hashset

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

ProgramFiles64Folder正在安装到WIX Installer中的\ Program Files(x86)\

我目前有两个WIX项目 - 一个用于创建x86安装程序,另一个用于创建x64安装程序.我想将这两个项目合并为一个项目,该项目使用变量来控制程序流程.

我有以下内容:

  <?if $(var.Platform) = x64 ?>
    <?define ProductName = "CableSolve Web (64 bit)" ?>
    <?define Win64 = "yes" ?>
    <?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
  <?else ?>
    <?define ProductName = "CableSolve Web" ?>
    <?define Win64 = "no" ?>
    <?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
  <?endif ?>
Run Code Online (Sandbox Code Playgroud)

然后我进入Visual Studio - > Build - > Configuration Manager并设置如下:

在此输入图像描述

然后,我完成并删除了两个项目的所有组件/目录中的所有"Win64 ='yes'"和"Win64 ='no'"参数.

我想知道是否还有比此更多的东西.当我创建我的x64安装程序时,我看到它试图安装到C:\ Program Files(x86)...而不是C:\ Program Files.我假设这意味着代码正在下降到'else'语句 - 但我不知道如何确认这一点.

是否还需要设置其他变量才能确保正确生成x64安装路径?

谢谢

我继承了下面的所有安装程序代码(不包括我目前正在添加的变量).我添加了$(var.PlatformProgramFilesFolder)以及EnvironmentVariables wxi. 在此输入图像描述

编辑2:这可能是罪魁祸首,但试图找到其配置为x86的原因:

------ Skipped Rebuild All:项目:CS Web Installer x64,配置:发布x86 ------

wix visual-studio-2010

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

在 WiX 安装程序脚本中使用变量时如何避免“Win64”属性无效?

我有 WiX 安装程序并且正在关注wix-tricks-and-tips

我的变量都工作正常,但由于以下原因,我收到了数百条警告:

<Component Id="C.Content.2011.1.414" DiskId="1" Guid="MYGUID" Win64="$(var.Win64)" KeyPath="yes">
Run Code Online (Sandbox Code Playgroud)

我收到警告:

警告 1 “Win64”属性无效 - 值“$(var.Win64)”根据其数据类型“ http://schemas.microsoft.com/wix/2006/wi:YesNoType ”无效 - “$”字符(十六进制值 0x24)不能包含在名称中。

然而:

<?xml version="1.0" encoding="utf-8"?>
<Include>
  <?if $(var.Platform) = x64 ?>
    <?define Win64 = "yes" ?>
    <?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
  <?else ?>
    <?define Win64 = "no" ?>
    <?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
  <?endif ?>
</Include>
Run Code Online (Sandbox Code Playgroud)

显然 Win64 是/否...我该如何避免此警告?

谢谢

wix visual-studio-2010

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

Resharper重新设计了for循环.这条LINQ语句在一行中做得太多了吗?

[WebMethod(Description = "Return all activities by Task.")]
public IList<ActivityDto> GetActivitiesByTaskID(int taskID)
{
    IList<Activity> activities = ActivityDao.GetByTaskID(taskID);
    IList<ActivityDto> activityDtos = new List<ActivityDto>(activities.Count);

    foreach(Activity activity in activities)
        activityDtos.Add(ActivityDto.Create(activity));

    return activityDtos;
}
Run Code Online (Sandbox Code Playgroud)

缩写为:

[WebMethod(Description = "Return all activities by Task.")]
public IList<ActivityDto> GetActivitiesByTaskID(int taskID)
{
    return ActivityDao.GetByTaskID(taskID).Select(ActivityDto.Create).ToList();
}
Run Code Online (Sandbox Code Playgroud)

我觉得因为我不得不问 - 它可能做得太多了.但是,引起我担忧的唯一部分是将函数传递给Select语句.我认为我还没有充分利用这种语法,而且它实际上是一种非常简洁的表达方式.

我想知道其他程序员是否会对这种缩短版本的方法感到不安.

编辑:此外,对效率比较的评论将不胜感激.我知道LINQ因在大型数据集上工作速度慢而臭名昭着.我想说在某些情况下可以枚举10,000-20,000条记录.

.net c# linq resharper refactoring

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

MVC4的mapRoute URL - {controller}/{action} vs Controller/{action}.有什么不同?

我最近因为这两条MVC4路线显然功能不同而受到灼伤.我想知道是否有人能突出显示正在发生的事情,所以我可以更好地理解.

routes.MapRoute(
    "post-User",
    "User",
    new { controller = "User", action = "create" },
    new { httpMethod = new HttpMethodConstraint("POST") }
    );

routes.MapRoute(
    "post-User",
    "{controller}",
    new { controller = "User", action = "create" },
    new { httpMethod = new HttpMethodConstraint("POST") }
    );
Run Code Online (Sandbox Code Playgroud)

我认为{controller}位是占位符,并且在下一行中说控制器="用户"将使这两个语句等效.显然使用{controller}设置所有路由的默认值?

c# routing asp.net-mvc-4

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

$(li).width()返回包含填充的值?

http://jsfiddle.net/MeoMix/8zg2V/83/

我有以下jsFiddle.这个想法是当显示一个太长的上下文菜单项时,它会用省略号呈现,但是在鼠标悬停时它会翻阅文本.

有问题的代码:

//Provides helper methods for non-specific functionality.
define('helpers', [], function () {
    'use strict';

    return {
        scrollElementInsideParent: function(element, parent) {
            //  Scroll the element if its too long to read.
            $(element).mouseover(function () {

                var distanceToMove = $(this).width() - $(parent).width();

                console.log("My width and parent width:", $(this).width(), $(parent).width());

                $(this).animate({
                    marginLeft: "-" + distanceToMove + "px"
                }, {
                    //  Just a feel good value; scales as the text gets longer
                    duration: 15 * distanceToMove,
                    easing: 'linear'
                });

            }).mouseout(function () {
                $(this).stop(true).animate({ …
Run Code Online (Sandbox Code Playgroud)

javascript css jquery width

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

jQuery UI可排序占位符显示在错误的位置,但仅在第一个on-hover上

我遇到一个关于jQuery UI的可排序占位符的初始定位的错误,当我将一个项目从一个可排序拖动到另一个可连接的可排序时.

这是一张图片,显示占位符出现在应该位于其上方的一个索引位置.请注意,RHS列表中的Item3位于占位符下方,但是当占位符出现时,我的指针完全位于Item3下方:

在此输入图像描述

一旦帮助器被拖得更多,该位置就会自行修复,但会导致一些丑陋的闪烁.请注意,如果我将助手拖出RHS列表,然后将其拖回RHS列表 - 则不会出现闪烁.它只是在它第一次进入时.

这是该问题的一个有效例子

这是链接中引用的代码:

//  HTML:
<div class='sortable-list'>
    <div class='sortable-list-item'>Item1</div>
    <div class='sortable-list-item'>Item2</div>
    <div class='sortable-list-item'>Item3</div>
</div>
<div class='sortable-list'>
    <div class='sortable-list-item'>Item1</div>
    <div class='sortable-list-item'>Item2</div>
    <div class='sortable-list-item'>Item3</div>
</div>

// CSS:
.sortable-list {
    border: solid 1px black;
    height: 250px;
    margin-left: 5px;
    overflow-y: auto;
    overflow-x: hidden;
    display: inline-block;
}

.sortable-list-item {
    border: solid 1px red;
    height: 50px;
    width: 100px;
}

.sortable-placeholder {
    background-color: #ebebeb;
}

//  JS:
var sortlists = $('.sortable-list').sortable({
  tolerance: 'pointer',
  connectWith: '.sortable-list',
  placeholder: 'sortable-placeholder sortable-list-item'
});
Run Code Online (Sandbox Code Playgroud)

寻找确认这是jQuery UI的错误或对我的CSS的更正,但我没有看到任何.

更新1: …

html javascript css jquery jquery-ui

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

将多个函数绑定到视图的单击事件

我正在尝试将一些函数绑定到click事件.这是我得到的:

var Foreground = Backbone.Marionette.Layout.extend({

    el: $('body'),

    events: {
        'click': 'tryResetContextMenu onClickDeselectCollections'
    },

    //  Whenever the user clicks on any part of the UI that isn't a multi-select item, deselect the multi-select items.
    onClickDeselectCollections: function (event) {
        console.log("deselect collections");
        var isMultiSelectItem = $(event.target).hasClass('multiSelectItem');
        var isChildMultiSelectItem = $(event.target).closest('.multiSelectItem').length > 0;

        if (!isMultiSelectItem && !isChildMultiSelectItem) {
            this.deselectCollections();
        }
    },

    //  If a click occurs and the default isn't prevented, reset the context menu groups to hide it.
    //  Child elements will call …
Run Code Online (Sandbox Code Playgroud)

backbone.js marionette

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

ES6解构对象,不用作函数参数时的赋值默认值?

我有:

const fs = require('fs');

const packageConfig = JSON.parse(fs.readFileSync('./package.json'));
const { jspm: { configFile: jspmConfigFile }} = packageConfig;
Run Code Online (Sandbox Code Playgroud)

但它packageConfig的价值configFile可能是不确定的.在这种情况下,我想默认jspmConfigFile'config.js

是否可以在不创建扩展packageConfig对象的情况下执行此操作?

我意识到我可以这样做:

const { jspm: { configFile: jspmConfigFile }} = _.extend({
    jspm: { config: 'config.js'}
}, packageConfig);
Run Code Online (Sandbox Code Playgroud)

但这只是为了通过解构获得合理的默认值而非常混乱.

我错过了什么?

javascript destructuring ecmascript-6

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

尝试访问不存在的属性时抛出错误

我有一个像这样的对象:

const foo = {
  bar: 'bar'
};
Run Code Online (Sandbox Code Playgroud)

我想修改它,以便如果有人尝试访问不存在的属性,则会抛出错误而不是返回未定义。

例如,

const baz = foo.baz;
// Error: Property 'baz' does not exist on object 'foo'
Run Code Online (Sandbox Code Playgroud)

这可能吗?

javascript

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