我试图按周分组记录,将汇总日期存储为一周的第一天.但是,我用于舍入日期的标准技术似乎在几周内没有正常工作(尽管它确实存在了几天,几个月,几年,几个季度以及我应用它的任何其他时间范围).
这是SQL:
select "start_of_week" = dateadd(week, datediff(week, 0, getdate()), 0);
Run Code Online (Sandbox Code Playgroud)
返回2011-08-22 00:00:00.000,这是星期一,而不是星期日.选择@@datefirst返回7,这是星期日的代码,所以据我所知,服务器设置正确.
通过将上面的代码更改为:我可以轻松地绕过这个:
select "start_of_week" = dateadd(week, datediff(week, 0, getdate()), -1);
Run Code Online (Sandbox Code Playgroud)
但事实上,我必须做出这样的例外让我有点不安.此外,如果这是一个重复的问题,请道歉.我发现了一些相关问题,但没有一个专门解决这个问题.
我最近注意到,Visual Studio 2010调试器不断跳转到使用该[DebuggerStepThrough]属性标记的此方法.

callstack看起来像这样:
[DebuggerStepThrough].我刚刚用foreach循环替换了Linq调用,如下所示,无济于事:

这有点令人烦恼,因为这种方法被频繁调用,我不明白为什么要忽略该属性.
是否可以设计ORDER BY子句以确保两个字段(均为INT类型)的以下条件child,parent分别为此示例调用.
parent引用child,但可以为null.child必须在出现在parent有序结果集中之前显示每个值.我在第5点遇到困难.
样本无序数据:
child parent
------------
1 NULL
3 5
4 2
2 5
5 NULL
Run Code Online (Sandbox Code Playgroud)
显然既不ORDER BY a, b或ORDER BY b, a工作.事实上,我越是想到它,我不确定它甚至可以完成.鉴于这些限制,明显的情况如:
child parent
------------
1 2
2 1
Run Code Online (Sandbox Code Playgroud)
是不允许的,因为它违反了规则3和4(显然是5).
那么,我正在努力实现的目标,如果是这样,怎么样?平台是SQL Server 2005.
更新:样本数据的所需排序顺序:
child parent
------------
1 NULL
5 NULL
2 5
3 5
4 2
Run Code Online (Sandbox Code Playgroud)
对于在父列中定义非空值的每一行,该值已存在于子列中.
我目前正在努力选择一些用于Object.GetHashCode()覆盖的通用散列函数.最初,根据本网站的推荐,我开始使用ELF.我的C#实现如下:
public int Generate(byte[] key) {
const uint c = 0xf0000000;
uint h = 0,
g = 0;
unchecked {
for (int i = 0, len = key.Length; i < len; i++) {
h = (h << 4) + key[i];
if ((g = h & c) != 0)
h ^= g >> 24;
h &= ~g;
}
}
return (int)h;
}
Run Code Online (Sandbox Code Playgroud)
我的测试用例包括524,288个唯一值,分为短(1-64)和长(256-2048)字符串(有限的ASCII字符集)和任意二进制数据(每个131,072),以在各种情况下测试每个算法.
我也理解这个测试场景的局限性.散列算法在散列(例如URL)时可能表现异常,但在散列JPG或其他东西时可能会很糟糕.在我看来,随机字符串/二进制是选择通用函数的最佳起点.我很高兴听到为什么不是这种情况的原因.
我执行了3次单独的测试运行(每次生成一组新的随机字符串/字节)并对结果进行平均.
与我正在测试的其他算法相比,ELF算法产生了可怕数量的冲突:
为了将其置于上下文中,我测试的其他3种算法平均在相同测试的平均3-10次碰撞之间产生.它也是4中最慢的,所以在这一点上它似乎完全没用.
完整结果:
Strings Binary
Algorithm short:long short:long
ELF … 我刚刚滚动了一个自定义配置部分,为Intellisense创建了一个随附的架构文档,并根据Michael Stum对另一个类似问题的回答将其添加到Web.config的Schemas属性中。
不幸的是,可能是由于我是用有限的知识手工创建XSD的,所以Intellisense依赖于一个xmlns属性,该属性指向自定义config元素中存在的XSD文件的名称空间。但是,在运行项目时,我得到了无法识别的属性“ xmlns”。请注意,属性名称是区分大小写的错误。
我可能可以修改我的XSD文件以定义该xmlns元素的属性,但是我想知道这是否只是对较大问题的临时解决方案。我必须承认,我对XML名称空间没有很好的了解,因此这可能是让我直接了解一些事情的机会。
这是XSD文件的根xs:schema元素的属性:
<xs:schema id="awesomeConfig"
targetNamespace="http://awesome.com/schemas"
xmlns="http://awesome.com/schemas"
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
...
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
在Web.config文件中创建元素时,Visual Studio 2008会自动追加:
<awesomeConfig xmlns="http://awesome.com/schemas"></awesomeConfig>
Run Code Online (Sandbox Code Playgroud)
因此,我是否完全误解了xs:schema属性的含义,还是正确的解决方案似乎看起来那么简单?