我正在尝试运行一个简单的查询来查找具有最高平均CPU时间的查询.该代码是从字面上复制粘贴在这里:
SELECT TOP 5 total_worker_time/execution_count AS [Avg CPU Time],
SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
ORDER BY total_worker_time/execution_count DESC;
Run Code Online (Sandbox Code Playgroud)
问题是,SQL Server抱怨第8行的语法错误,参数为sys.dm_exec_sql_text:qs.sql_handle无效读取
Incorrect syntax near '.'.
Run Code Online (Sandbox Code Playgroud)
对于我的生活,我不能弄清楚查询有什么问题.有任何想法吗?
我正在尝试学习F#中的静态成员约束.通过阅读Tomas Petricek的博客文章,我理解编写一个inline"仅使用自己使用静态成员约束编写的操作"的函数将使我的函数正确地适用于满足这些约束的所有数值类型.这个问题表明它的inline工作方式与c ++模板类似,所以我没想到这两个函数之间有任何性能差异:
let MultiplyTyped (A : double[,]) (B : double[,]) =
let rA, cA = (Array2D.length1 A) - 1, (Array2D.length2 A) - 1
let cB = (Array2D.length2 B) - 1
let C = Array2D.zeroCreate<double> (Array2D.length1 A) (Array2D.length2 B)
for i = 0 to rA do
for k = 0 to cA do
for j = 0 to cB do
C.[i,j] <- C.[i,j] + A.[i,k] * B.[k,j]
C
let inline MultiplyGeneric (A …Run Code Online (Sandbox Code Playgroud) 我工作的一个小项目有一些不同类型的数组(例如double[],float[],int[].为了验证/测试/神智的目的,我打印出一些阵列控制台,因为我走.所以我有多种功能看起来如下所示(本例简化 - 假设我只处理单维数组):
void Print(float[] a) // prints an array of floats
{
for (int i = 0; i < a.Length; i++)
{
Console.Write(a[i]);
}
}
void Print(double[] a) // prints an array of doubles
{
for (int i = 0; i < a.Length; i++)
{
Console.Write(a[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
我以无限的智慧认为,通过简单地创建这些函数的通用版本,我可以减少一些代码重复.所以我尝试了这个:
void Print<T>(T t) where T : Array
{
for (int i = 0; i < t.Length; i++)
{
Console.Write(t.GetValue(i));
}
}
Run Code Online (Sandbox Code Playgroud)
Intellisense没有抱怨,但编译器失败并出现一个非常有趣的错误:
Constraint cannot …
我有一个标准(WPF工具包)数据网格.某些列(显式定义)必须显示为百分比.如果值低于0,则某些列必须以红色显示.(两组列不相同).我试图分别使用StringFormat和实现这些要求Style.我的XAML:
<Window xmlns:local="clr-namespace:myNamespace"
xmlns:tk="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit">
<Window.Resources>
<local:ValueConverter x:Key="valueToForeground" />
<Style TargetType="{x:Type tk:DataGridCell}">
<Setter Property="Foreground"
Value="{Binding RelativeSource={RelativeSource Self}, Path=Content.Text, Converter={StaticResource valueToForeground}}" />
</Style>
</Window.Resources>
<Grid>
<tk:DataGrid AutoGenerateColumns="False"
ItemsSource="{Binding Path=myClass/myProperty}">
<tk:DataGrid.Columns>
<tk:DataGridTextColumn Header="A"
Binding="{Binding colA}" />
<tk:DataGridTextColumn Header="B"
Binding="{Binding colB, StringFormat=\{0:P\}}" />
<tk:DataGridTextColumn Header="C"
Binding="{Binding colC, StringFormat=\{0:P\}}" />
<tk:DataGridTextColumn Header="D"
Binding="{Binding colD, StringFormat=\{0:P\}}" />
</tk:DataGrid.Columns>
</tk:DataGrid>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
和相关的转换器:
namespace myNamespace
{
public class ValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{ …Run Code Online (Sandbox Code Playgroud) 你好我想弄清楚这件事..
说我有这个代码.
int a = 5;
double& b = a; //Error.
Run Code Online (Sandbox Code Playgroud)
然后,一旦我将第二行声明为const,编译器就不会再抱怨了.
const double& b = a; //Correct.
Run Code Online (Sandbox Code Playgroud)
在幕后真正发生了什么,为什么const解决了这个问题.
我正在尝试编写一个简单的数组添加函数.唯一的复杂性来自于我试图使其成为通用的.我知道,在C#中有一个值类型没有类型约束,但我的理解是,F#可以使它与工作明确成员的约束.这是我的尝试:
let Add<'T when 'T : (member (+) : 'T -> 'T -> 'T)> (A : 'T[]) (B : 'T[]) =
Array.init A.Length (fun i -> A.[i] + B.[i])
Run Code Online (Sandbox Code Playgroud)
编译器列出了三个错误:一个在A. [i]上,一个在+符号上,一个在B. [i]上,但我的猜测是它们都是一样的:
A type parameter is missing a constraint
'when ^T : (static member ( + ) : ^T * ^T -> ^?6069)'
Run Code Online (Sandbox Code Playgroud)
我确定这只是一个语法问题,有人能指出我在正确的地方吗?
ps:有没有不同/更简单的方法来做到这一点,或者这是使它工作的正确方法?
我想返回给定列表的复制版本,其中每个元素都乘以标量.
...
int attenuation = 3;
return new List<double>(VoltsPerDivX1.Select(x => x*attenuation));
Run Code Online (Sandbox Code Playgroud)
VoltsPerDivX1是现有的类型列表List<double>.这是正确的方式还是更好的方式?
我是这门语言的新手.为了尝试和理解参考我已经尝试实施一个简单的定向列表新生大学计算机科学的方式.
type item = {
value:float
next:ref<item>
}
type list() =
let head:ref<item> = null // tried instantiation so many different ways and it likes none of em
let sum i =
if i == null then
0
else
i.value + sum i.next // constructor not defined?
Run Code Online (Sandbox Code Playgroud)
请告诉我为什么我不好