我想知道为什么MemberwiseClone被定义为受保护.这意味着只有派生类型才能访问它.如果将其定义为公共问题,会出现什么问题?
我有两个表tabData和tabDataDetail.我想要来自Parent-Table(tabData)的所有idData(PK)只有 Child-Table中的行(tabDataDetail,FK是fiData):
任何其他组合无效.怎么弄他们?
我没有成功的尝试(慢,并给我也只有 fiActioncode 34的行):
alt text http://www.bilder-hochladen.net/files/4709-l0.jpg
谢谢你的时间.
编辑:感谢所有人的回答.现在我很遗憾没有足够的时间来检查哪一个是最好的还是有效的.我将第一个工作标记为答案.
EDIT2:我认为明确的答案确实是最有效和最紧凑的解决方案.
编辑3:Codesleuth的答案很有趣,因为它只返回行而不是只有一个fiActionCode = 11.很难看到,因为它的唯一真正的20个tabDataDetail-rows总共41524189行有两个.无论如何,这不是我所要求的100%,而是我正在寻找的东西.
我有以下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) 到现在为止,我认为我会理解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)
但是,我仍然对这种限制的原因感兴趣.也许有人也有更好的方法.
我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().
有人能告诉我如何在SQL中追加?我整天都在试图解决这个问题.这是我到目前为止:
update table1
set field1 = field1 + '123456'
where field2 = '12'
Run Code Online (Sandbox Code Playgroud)
对不起,我忘了提到我在声明中更新了多个字段.
我该如何管理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) 我正在重写一个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)
正如你所看到的,我不确定相似的运算符是什么.我通过几个代码转换器运行它,他们不断抛出错误.
对不起,如果这是重复,但我还没有找到一个.为什么我不能用在我的定义列别名SELECT从ORDER 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 server 2008 x64 r2的vps服务器上运行一个网站.我们受到了17886错误的轰炸- 即:
服务器将断开连接,因为客户端驱动程序在会话处于单用户模式时发送了多个请求.当客户端在会话中仍在运行批处理时发送重置连接的请求时,或者在会话重置连接时客户端发送请求时,会发生此错误.请联系客户端驱动程序供应商.
这会导致sql语句返回损坏的结果.我已经尝试了几乎所有我在网上找到的建议,包括:
我们只有一个数据库,绝对是多用户.
最近安装了所有东西,所以它是最新的.它们可能是相关的high cpu(虽然不完全根据我所见过的监视器).也与high request rates搜索引擎相关.但是,高CPU /请求不应该导致sql连接重置 - 最坏的情况下我们应该有很高的响应时间或者我拒绝发送响应.
有什么建议?我只是一个开发人员而不是dba - 我需要一个dba来解决这个问题吗?