小编Chr*_*cia的帖子

将lambda表达式用于事件处理程序

我目前有一个声明如下的页面:

public partial class MyPage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //snip
        MyButton.Click += (o, i) =>
        {
            //snip
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我最近才从1.1迁移到.NET 3.5,所以我习惯在Page_Load之外编写事件处理程序.我的问题是; 在使用lambda方法时,我应该注意哪些性能缺陷或缺陷?我更喜欢它,因为它当然更简洁,但我不想牺牲性能来使用它.谢谢.

c# performance events lambda

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

帮助理解Enumerable.Join方法

昨天我发布了关于在Join()方法中使用lambdas来检查2个实体中是否存在2个条件的问题.我收到了关于这个问题的答案.我在阅读了关于Enumerable.Join()方法的MSDN文章之后想到了,我完全理解发生了什么,但我没有.有人可以帮我理解下面代码中的内容(具体是Join()方法)吗?提前致谢.

if (db.TableA.Where( a => a.UserID == currentUser )
      .Join( db.TableB.Where( b => b.MyField == someValue ),
             o => o.someFieldID,
             i => i.someFieldID,
             (o,i) => o )
      .Any()) 
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

编辑:具体来说,我很好奇最后3个参数,以及实际发生了什么.它们如何导致Func(TOuter,TKey),Func(TInner,TKey)等的签名要求.

.net c# linq asp.net

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

有没有办法区分两个.NET可执行文件?

我们最近有一位开发人员离开我们的组织 我们不确定他在生产服务器上放置的可执行文件的版本是否与当前在TFS中的版本相同.有没有办法(除了使用Just Compile或ILDASM之类的东西)从TFS构建项目并将该可执行文件与当前生产服务器上的可执行文件进行比较?

更新:我正在尝试Just Decompile,并且我已经加载了两个二进制文件,因此我逐步浏览每个命名空间,成员等,以便将它们相互比较.我习惯在Visual Studio中使用Schema Compare来比较2个数据库的模式,并查看更新,删除和添加的项目,并突出显示差异.是不是有一些工具可以采取这两个反编译的二进制文件,并以某种方式突出显示差异?

.net c# visual-studio-2010 disassembly

8
推荐指数
2
解决办法
4527
查看次数

传递可变数量的参数

我需要编写一个函数来获取可变数量的参数.我读了一些关于params []的内容,但我认为这不会对我的情况有用.我的函数需要采用可变数量的整数,然后为每个整数采用相应的bool值.我必须遍历每个组合并将它们输入到数据库中.只是找人指出我正确的方向.谢谢.

c#

5
推荐指数
3
解决办法
2528
查看次数

垂直对齐输入元素

我在使用以下代码时遇到了一些麻烦.我有一个绝对定位的div,其中我有3个元素:1个文本输入,1个密码和一个包含图像的按钮.标记如下:

<div id="credentials">
            <input type="text" id="username" /> 
            <input type="password" id="password" />
            <button type="submit" id="login"><img src="./img/login.png" alt="Submit" /></button> 
</div>
Run Code Online (Sandbox Code Playgroud)

而CSS:

div#credentials
{
    position: absolute;
    right: 5px;
    top: 10px;
    background-color: #494949;
}

#username
{
    font-family: 'Lucida Sans', Arial, Helvetica, sans-serif;
    font-size: 8pt;
    color: #AAA;
    padding: 3px;
    margin: 0px;
}

#password
{
    font-size: 8pt;
    color: #AAA;
    padding: 3px;
    margin: 0px;
}

#login
{   background: transparent;
    border: 0px;
    padding: 3px;
    cursor: pointer;
}
Run Code Online (Sandbox Code Playgroud)

看起来好像两个第一个元素位于div的底部,按钮位于顶部.我想垂直对齐div中间的所有3个元素,但在尝试了许多不同的填充/边距组合后,找不到任何看起来在浏览器中可见的内容.有没有人有这个问题的经验?

html css

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

无法在构建时将文件复制到服务器.访问路径被拒绝

我在Visual Studio中有一个由5个项目组成的解决方案.项目构建到程序集(.dll).我将每个项目的输出路径设置为\ my-web-server\wwwroot\bin,这在一个项目上工作正常.在我所有项目的属性中,我将输出路径设置为同一目录,但是当我尝试构建除一个项目之外的所有项目时,我收到错误:

无法复制文件 "OBJ \发布\ Index.dll" 到 "\我的Web服务器\ wwwroot的\ BIN\Index.dll".访问路径'\ my-web-server\wwwroot\bin\Index.dll'被拒绝.

我认为这可能是一个权限问题,因为我的组织将事情锁定,但我无法控制授予权限.非常感谢任何正确方向的帮助.

visual-studio

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

在表<>上的Lambda Where()中使用Join的任何方法?

我在C#中使用Linq的前几天,我很想知道是否有更简洁的方式来编写以下内容.

MyEntities db = new MyEntities(ConnString);

var q = from a in db.TableA
        join b in db.TableB
        on a.SomeFieldID equals b.SomeFieldID
        where (a.UserID == CurrentUser && 
        b.MyField == Convert.ToInt32(MyDropDownList.SelectedValue))
        select new { a, b };

if(q.Any())
{
//snip
}
Run Code Online (Sandbox Code Playgroud)

我知道如果我想检查单个表的字段中是否存在值,我可以使用以下内容:

if(db.TableA.Where(u => u.UserID == CurrentUser).Any())
{
    //snip
}
Run Code Online (Sandbox Code Playgroud)

但是我很想知道是否有办法做lambda技术,但它能满足这两个表中第一个技术的条件.

对不起任何错误或清晰,我会根据需要进行编辑.提前致谢.

.net c# linq

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

在RegularExpressionValidator的ValidationExpression中引用

使用所述控件来验证ASP.NET TextBox,我很好奇最流行的做法是什么.目前使用:

ValidationExpression="^[\w\d\s.,&quot;'-]+$"
Run Code Online (Sandbox Code Playgroud)

任何更短的方式这样做?试过\,""无济于事.谢谢.

regex asp.net

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

Visual Studio ASP.NET开发服务器开始返回HTTP 503错误的原因是什么?

我已经将一个网站整合了几个星期,大部分例程都是用母版页创建新的网页表单.我一直在使用ASP.NET开发服务器查看我对项目的添加,但是今天(似乎无处不在)服务器一直在返回HTTP 503错误.我尝试重新启动VS,然后重新启动工作站,然后确保在我的工作站上启用了"绕过本地地址代理",但无济于事.有没有人遇到此行为或有没有人对我可以审查调查的日志提出建议?提前致谢.

更新:使用telnet时,服务器返回看起来像是ASP.NET服务器页面的标记,列出HTTP错误400 - 错误请求.仍然在谷歌浏览器中获得503并在Firefox和Internet Explorer中获得空白页面.

asp.net cassini visual-studio-2010 asp.net-development-serv visual-studio

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

如何强制TFS让我下载一个文件夹(列出的方法除外)?

我有一个看似常见的问题,但找不到适合我的常用解决方案.我最近对我的计算机进行了重新映像,现在正在从TFS重新下载解决方案.其中一个解决方案文件夹包含2个文件夹,列出源控件资源管理器的"最新"列中的"未下载".当试图打开解决方案时,我收到错误"无法加载项目文件.无法找到文件x".我尝试过下面列出的方法,但无济于事:

  1. 获取特定版本,检查覆盖选项
  2. 删除.suo文件,重启VS2010
  3. 得到/强迫
  4. 删除映射,删除本地文件,将整个TFS项目重新映射到本地文件夹
  5. tfpt回滚/更改集.csproj的最后一个变更集列出了一个分支,合并为挂起的更改由我
  6. 文件 - >源代码管理 - >从源代码管理打开,导航到TFS项目,尝试在未下载的文件夹中打开.csproj,收到错误"无法打开所选文件.项目文件已被移动,重命名或不在您的计算机上".

我可能会遗漏我尝试的其他事情,如果我能想到任何事情,我一定会更新这个清单.

除了上面列出的那些,有没有其他方法从TFS获取这2个文件夹及其内容?

tfs visual-studio-2010

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

在Repeater的HeaderTemplate中设置MyLabel.Text

我发现这样做的每个样本都包括在我的页面的OnLoad之外编写一个函数来执行此操作,但我很好奇是否有更简洁的方法来实现它.我在HeaderTemplate中有一个Label,我只想将标签的文本设置为字符串.如果标签位于转发器之外,我可以执行以下操作:

Month.Text = Enum.GetName(typeof(Month), Convert.ToInt16(MonthList.SelectedValue));
Run Code Online (Sandbox Code Playgroud)

有简洁的方法吗?

asp.net repeater web-controls

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

使用smalldatetime或int在数据库中存储一个月

我目前正在为我们的组织制定月度清单系统.用户可以登录,选择一个月,然后提交与该月相关的是/否问题列表,以用于我们组织的目的.有些问题在超过1个月的清单中使用,因此我正在创建一个交叉表来促进这种一对多的关系.字段是ChecklistMonth和ChecklistQuestionID.

但是,我不确定如何存储ChecklistMonth字段.如果我使用smalldatetime,它似乎有点矫枉过正,因为我只对这个月感兴趣.它在未来几年看起来也会有点过时.另一方面,创建一个包含MonthID和Month字段的表似乎有点浪费,以便仅识别月份.

大家对此有什么看法?提前致谢.

sql database database-design

0
推荐指数
1
解决办法
283
查看次数

如何创建HttpContext的实例?

目前,我收到错误"非静态字段方法或属性需要对象引用".我的代码如下:

using MyApp.Global;

namespace MyApp.MyNamespace
{
    public class MyClass:System.Web.UI.Page
    {
        //Toolbox is inside Global, GetCurrentCookieData is a static method
        private CookieData cd = Toolbox.GetCurrentCookieData(HttpContext.Current);
        //the above was changed and resolved the first error, but another error
        //just popped up. Below, I get the error: cd denotes field 
        //where class was expected
        private int CompanyID = Util.GetCompanyIDByUser(cd.Users);

        protected override void OnLoad(EventArgs e)
        {
            //snip
        }           

        protected void MyEventHandler(object sender, EventArgs e)
        {
            //snip
        }
     }
}
Run Code Online (Sandbox Code Playgroud)

目前,我的每个方法都需要使用cd,因此我不是在每个方法中创建一个变量,而是在类中声明它并让它可用于所有方法.当我尝试在方法中设置cd时,它工作正常.我已经google了,似乎我必须有一个Page的实例才能在那里使用,但这不起作用.所以我真的误解了它是如何工作的.谁能指出我正确的方向?

编辑:我添加了静态关键字到cd,以解决'cd表示期望类的字段'错误.这是好的实施吗?

编辑:我将在下面标记正确的答案并提出一个新问题,因为我认为这是值得的.

c# asp.net

0
推荐指数
1
解决办法
6369
查看次数