小编Tim*_*ter的帖子

为什么System.Object中定义的MemberwiseClone受到保护?

我想知道为什么MemberwiseClone被定义为受保护.这意味着只有派生类型才能访问它.如果将其定义为公共问题,会出现什么问题?

.net

13
推荐指数
2
解决办法
2357
查看次数

SQL-Query:Subtable中的EXISTS

我有两个表tabData和tabDataDetail.我想要来自Parent-Table(tabData)的所有idData(PK)只有 Child-Table中的行(tabDataDetail,FK是fiData):

  • fiActionCode = 11单独或
  • fiactionCode = 11和fiActionCode = 34

任何其他组合无效.怎么弄他们?

我没有成功的尝试(慢,并给我也只有 fiActioncode 34的行):

alt text http://www.bilder-hochladen.net/files/4709-l0.jpg

谢谢你的时间.


编辑:感谢所有人的回答.现在我很遗憾没有足够的时间来检查哪一个是最好的还是有效的.我将第一个工作标记为答案.

EDIT2:我认为明确的答案确实是最有效和最紧凑的解决方案.

编辑3:Codesleuth的答案很有趣,因为它只返回行而不是只有一个fiActionCode = 11.很难看到,因为它的唯一真正的20个tabDataDetail-rows总共41524189行有两个.无论如何,这不是我所要求的100%,而是我正在寻找的东西.

sql sql-server exists

12
推荐指数
1
解决办法
2382
查看次数

使用where子句查询速度慢

我有以下sql查询,只需1秒执行:

select a.date, b.rate, c.type, a.value from

a inner join b on a.id = b.aid
c inner join b.id = c.bid
where a.name = 'xxx'
Run Code Online (Sandbox Code Playgroud)

但是我需要一个结果集来获得速率大于0的结果.所以当我将查询更改为此时需要7分钟才能执行:

select a.date, b.rate, c.type, a.value from

a inner join b on a.id = b.aid
c inner join b.id = c.bid
where a.name = 'xxx' and b.rate>0
Run Code Online (Sandbox Code Playgroud)

为什么这会使查询时间从1秒增加到7分钟?由于b表很大,我甚至尝试使用CTE,但这也没有改善性能.我认为使用CTE会有较小的值集来过滤,所以它应该更快但是没有帮助:

;with x as
(select a.date, b.rate, c.type, a.value from

a inner join b on a.id = b.aid
c inner join b.id = c.bid
where a.name = 'xxx') …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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

DateTime.ParseExact,包含7位数字/一个月或两位数月份

到现在为止,我认为我会理解DateTime.ParseExact它是如何工作的,但这令人困惑.为什么以下行返回false

DateTime.TryParseExact("2013122", "yyyyMdd", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out lastUpdate)
Run Code Online (Sandbox Code Playgroud)

月份也可以有两位数.在我看来,它应该能够理解它意味着2013年1月22日.为什么我走错了路?我错过了什么或者有一个简单的解决方法吗?


同时我正在使用这种不太优雅的解决方法,但有效:

public static DateTime? ParseDate_yyyyMdd(String date)
{
    if (date == null)
        return null;
    date = date.Trim();
    if (date.Length < 7)
        return null;
    if (date.Length == 7)
        date = date.Insert(4, "0");
    DateTime dt;
    if (DateTime.TryParseExact(date, "yyyyMMdd", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out dt))
        return dt;
    return null;
}
Run Code Online (Sandbox Code Playgroud)

给出了我想要的结果:

DateTime? date = ParseDate_yyyyMdd("2013122");
Console.Write(date.ToString()); // 01/22/2013
Run Code Online (Sandbox Code Playgroud)

但是,我仍然对这种限制的原因感兴趣.也许有人也有更好的方法.

.net c# datetime parsing

12
推荐指数
1
解决办法
4102
查看次数

如何从列表中找到倒数第二个元素?

List<string>喜欢:

 List<String> lsRelation = new List<String>{"99","86","111","105"}.
Run Code Online (Sandbox Code Playgroud)

现在我想找到数字111,它是倒数第二个字符串.

所以我试过了:

String strSecondLast=lsrelation.Last() - 2;
Run Code Online (Sandbox Code Playgroud)

这不起作用.那么我怎样才能找到List的倒数第二个元素Last().

c# list

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

如何附加到SQL中的现有记录?

有人能告诉我如何在SQL中追加?我整天都在试图解决这个问题.这是我到目前为止:

update table1 
set field1 = field1 + '123456' 
where field2 = '12'
Run Code Online (Sandbox Code Playgroud)

对不起,我忘了提到我在声明中更新了多个字段.

sql t-sql database sql-server-2008

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

静态一次性物体

  • 我该如何管理static带有一次性物品的课程?有没有经验法则?

  • 基本上,我应该重构并做下面的DisposableDataManager课程,non- static还是把一切都留下来GC好吗?

.

public static class DisposableDataManager
{
    // ImageList is an 'IDisposable'.
    public static ImageList FirstImageList { get; private set; }
    public static ImageList SecondImageList { get; private set; }

    static DisposableDataManager()
    {
        FirstImageList = CreateFirstImageList();
        SecondImageList = CreateSecondImageList();        
    }

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

c# static garbage-collection dispose winforms

11
推荐指数
2
解决办法
6750
查看次数

C#中是否有类似VB.NET的运算符?

我正在重写一个vb.net应用程序,我不能声称对vb很好.我需要在C#中编写这个等效的:

Dim bigList = (From gme In dtx.gmc_message_elements 
              Where gme.element_key_name Like "*email" _
              Or gme.element_key_name Like "*web" 
              Or gme.element_key_name Like "*both" _
              Select gme.element_key_name Distinct).ToList()
Run Code Online (Sandbox Code Playgroud)

我到目前为止:

var bigList = (from gme in dtx.gmc_message_elements 
               where gme.element_key_name Like "*email" 
               || gme.element_key_name Like "*web" 
               || gme.element_key_name Like "*both" 
               select gme.element_key_name).FirstOrDefault().ToList();
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我不确定相似的运算符是什么.我通过几个代码转换器运行它,他们不断抛出错误.

c# linq vb.net

11
推荐指数
2
解决办法
4614
查看次数

为什么我不能使用CASE在ORDER BY中引用列别名?

对不起,如果这是重复,但我还没有找到一个.为什么我不能用在我的定义列别名SELECTORDER BY当我使用 CASE

考虑这个简单的查询:

SELECT NewValue=CASE WHEN Value IS NULL THEN '<Null-Value>' ELSE Value END
FROM dbo.TableA
ORDER BY CASE WHEN NewValue='<Null-Value>' THEN 1 ELSE 0 END
Run Code Online (Sandbox Code Playgroud)

结果是错误:

列名称"NewValue"无效

这是一个sql-fiddle.(替换为ORDER BY NewValue那个CASE WHEN...被注释掉的)

我知道在这种情况下我可以ORDER BY CASE WHEN Value IS NULL THEN 1 ELSE 0 END这里一样使用,但实际上查询更复杂,我希望尽可能保持可读性.我是否必须使用子查询或CTE,如果是这样,为什么会这样?

更新为Mikael Eriksson评论任何表达式与别名组合是不允许的.所以即使这个(毫无意义的查询)失败也是出于同样的原因:

SELECT '' As Empty
FROM dbo.TableA
ORDER BY Empty + ''
Run Code Online (Sandbox Code Playgroud)

结果:

列名称"空"无效.

因此,在一个ORDER BY …

sql t-sql sql-server-2005 sql-order-by

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

错误17886 - 服务器将断开连接

我们在带有sql server 2008 x64 r2的vps服务器上运行一个网站.我们受到了17886错误的轰炸- 即:

服务器将断开连接,因为客户端驱动程序在会话处于单用户模式时发送了多个请求.当客户端在会话中仍在运行批处理时发送重置连接的请求时,或者在会话重置连接时客户端发送请求时,会发生此错误.请联系客户端驱动程序供应商.

这会导致sql语句返回损坏的结果.我已经尝试了几乎所有我在网上找到的建议,包括:

  • 与火星,没有.
  • 有游泳池和没有游泳池
  • async = true,没有

我们只有一个数据库,绝对是多用户.

最近安装了所有东西,所以它是最新的.它们可能是相关的high cpu(虽然不完全根据我所见过的监视器).也与high request rates搜索引擎相关.但是,高CPU /请求不应该导致sql连接重置 - 最坏的情况下我们应该有很高的响应时间或者我拒绝发送响应.

有什么建议?我只是一个开发人员而不是dba - 我需要一个dba来解决这个问题吗?

sql-server sql-server-2008 windows-server-2008-r2

10
推荐指数
1
解决办法
8737
查看次数