小编aba*_*hev的帖子

方法可以做成静态,但应该吗?

Resharper喜欢指出每个asp.net页面可以静态化的多个函数.如果我让它们静止,对我有帮助吗?我应该将它们设置为静态并将它们移动到实用程序类吗?

.net c# resharper refactoring static-methods

356
推荐指数
10
解决办法
6万
查看次数

在mysql中插入多行

如果我一次插入多行,数据库查询会更快:

喜欢

INSERT....

UNION

INSERT....

UNION
Run Code Online (Sandbox Code Playgroud)

(我需要插入2-3000行)

mysql sql-insert

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

如何检查类型是子类型还是对象类型?

要检查类型是否是C#中另一种类型的子类,很容易:

typeof (SubClass).IsSubclassOf(typeof (BaseClass)); // returns true
Run Code Online (Sandbox Code Playgroud)

但是,这将失败:

typeof (BaseClass).IsSubclassOf(typeof (BaseClass)); // returns false
Run Code Online (Sandbox Code Playgroud)

有没有办法检查类型是否是基类本身的子类OR,而不使用OR运算符或使用扩展方法?

c# reflection types subclass

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

我为什么要使用IHttpActionResult而不是HttpResponseMessage?

我一直在使用WebApi进行开发,并已转移到WebApi2,其中Microsoft引入了一个IHttpActionResult似乎建议用于返回a 的新接口HttpResponseMessage.我对这个新接口的优点感到困惑.这似乎主要是公正提供SLIGHTLY更简单的方法来创建一个HttpResponseMessage.

我认为这是"为抽象而抽象"的论点.我错过了什么吗?除了节省一行代码之外,使用这个新接口可以获得什么样的真实优势?

旧方式(WebApi):

public HttpResponseMessage Delete(int id)
{
    var status = _Repository.DeleteCustomer(id);
    if (status)
    {
        return new HttpResponseMessage(HttpStatusCode.OK);
    }
    else
    {
        throw new HttpResponseException(HttpStatusCode.NotFound);
    }
}
Run Code Online (Sandbox Code Playgroud)

新方式(WebApi2):

public IHttpActionResult Delete(int id)
{
    var status = _Repository.DeleteCustomer(id);
    if (status)
    {
        //return new HttpResponseMessage(HttpStatusCode.OK);
        return Ok();
    }
    else
    {
        //throw new HttpResponseException(HttpStatusCode.NotFound);
        return NotFound();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# httpresponse asp.net-web-api

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

使用GUID作为主键的最佳做法是什么,特别是在性能方面?

我有一个应用程序在几乎所有表中使用GUID作为主键,我已经读过使用GUID作为主键时存在性能问题.老实说,我没有看到任何问题,但我即将开始一个新的应用程序,我仍然想使用GUID作为主键,但我想使用复合主键(GUID和可能是另一个字段) .)

我正在使用GUID,因为当您拥有不同的环境(如"生产","测试"和"开发"数据库)以及数据库之间的迁移数据时,它们很好并且易于管理.

我将使用Entity Framework 4.3,我想在将其插入数据库之前在应用程序代码中分配Guid.(即我不想让SQL生成Guid).

创建基于GUID的主键的最佳做法是什么,以避免与此方法相关的假设性能命中?

sql-server database-design entity-framework guid primary-key

311
推荐指数
4
解决办法
15万
查看次数

在没有提交按钮的情况下按Enter键提交表单

好吧,我想通过按Enter键但不显示提交按钮来提交表单.如果可能的话,我不想进入JavaScript,因为我希望所有浏览器都可以工作(我知道的唯一JS方式是事件).

现在表单看起来像这样:

<form name="loginBox" target="#here" method="post">
    <input name="username" type="text" /><br />
    <input name="password" type="password" />
    <input type="submit" style="height: 0px; width: 0px; border: none; padding: 0px;" hidefocus="true" />
</form>
Run Code Online (Sandbox Code Playgroud)

哪个效果很好.当用户按下Enter键时,提交按钮会起作用,并且该按钮不会显示在Firefox,IE,Safari,Opera和Chrome中.但是,我仍然不喜欢这个解决方案,因为很难知道它是否适用于所有浏览器的所有平台.

有谁能建议更好的方法?或者这是否与它一样好?

html forms submit

309
推荐指数
15
解决办法
45万
查看次数

如何将字符串解析为可空的int

我想在C#中将字符串解析为可以为空的int.即.我想要返回字符串的int值,如果无法解析,则返回null.

我有点希望这会奏效

int? val = stringVal as int?;
Run Code Online (Sandbox Code Playgroud)

但这不起作用,所以我现在这样做的方式是我写了这个扩展方法

public static int? ParseNullableInt(this string value)
{
    if (value == null || value.Trim() == string.Empty)
    {
        return null;
    }
    else
    {
        try
        {
            return int.Parse(value);
        }
        catch
        {
            return null;
        }
    }
}   
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?

编辑: 感谢TryParse的建议,我确实知道这一点,但它的结果大致相同.我更感兴趣的是知道是否有一个内置的框架方法可以直接解析为可以为空的int?

.net c# string nullable .net-3.5

288
推荐指数
9
解决办法
15万
查看次数

我怎样才能限制Parallel.ForEach?

我有一个Parallel.ForEach()异步循环,我下载了一些网页.我的带宽有限,所以我每次只能下载x页,但Parallel.ForEach会执行所需网页的完整列表.

有没有办法在运行Parallel.ForEach时限制线程号或任何其他限制器?

演示代码:

Parallel.ForEach(listOfWebpages, webpage => {
  Download(webpage);
});
Run Code Online (Sandbox Code Playgroud)

真正的任务与网页无关,因此创意网络抓取解决方案无济于事.

.net c# asynchronous parallel.foreach

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

获取"项目"nuget配置是无效错误

我得到"[project] nuget配置无效"错误.之前我收到了这样的错误,并使用了此处提到的"更新Nuget包管理器"解决方案:

无法在Visual Studio 2015中安装任何程序包

我也尝试过该链接中提到的其他解决方案无济于事.

  • 重新启动Visual Studio
  • 删除nuget.config
  • 删除packages.config
  • 更新nuGet包管理器.

此外,我能够在解决方案级别和此解决方案中的其他项目中查看nuGet包.

而且,如果我转到软件包管理器控制台(工具 - > NuGet软件包管理器 - >软件包管理器控制台),我在项目下拉列表中看不到有这个问题的项目,但我看到解决方案中的其他项目.

visual-studio nuget visual-studio-2015

260
推荐指数
2
解决办法
9万
查看次数

使用LINQ在一行代码中将string []转换为int []

我有一个字符串形式的整数数组:

var arr = new string[] { "1", "2", "3", "4" };
Run Code Online (Sandbox Code Playgroud)

我需要一个'真实'整数数组来推动它:

void Foo(int[] arr) { .. }
Run Code Online (Sandbox Code Playgroud)

我试图转换int,它当然失败了:

Foo(arr.Cast<int>.ToArray());
Run Code Online (Sandbox Code Playgroud)

我可以做下一个:

var list = new List<int>(arr.Length);
arr.ForEach(i => list.Add(Int32.Parse(i))); // maybe Convert.ToInt32() is better?
Foo(list.ToArray());
Run Code Online (Sandbox Code Playgroud)

要么

var list = new List<int>(arr.Length);
arr.ForEach(i =>
{
   int j;
   if (Int32.TryParse(i, out j)) // TryParse is faster, yeah
   {
      list.Add(j);
   }
 }
 Foo(list.ToArray());
Run Code Online (Sandbox Code Playgroud)

但两个看起来都很难看.

还有其他方法可以完成任务吗?

.net c# linq extension-methods

253
推荐指数
4
解决办法
21万
查看次数