我在SQL Server中遇到过以下错误(或功能).
当我使用SUM (*column*)
where column
有一个numeric(18, 8)
类型并将它乘以任何其他数字(整数或十进制)时,结果精度将减少到numeric(18, 6)
.
这是演示的示例脚本.
CREATE TABLE #temp (Qnty numeric(18,8))
INSERT INTO #temp (Qnty) VALUES (0.00000001)
INSERT INTO #temp (Qnty) VALUES (0.00000002)
INSERT INTO #temp (Qnty) VALUES (0.00000003)
SELECT Qnty, 1*Qnty
FROM #temp
SELECT (-1)*SUM(Qnty), SUM(Qnty), -SUM(Qnty), SUM(Qnty) * CAST(2.234 as numeric(18,8))
FROM #temp
DROP TABLE #temp
Run Code Online (Sandbox Code Playgroud)
第二个SELECT查询的结果
0.000000 0.00000006 -0.00000006 0.000000
Run Code Online (Sandbox Code Playgroud)
如您所见,然后我乘以SUM,结果为0.000000
谁有人能解释这种奇怪的行为?
UPD.我在SQL Server Studio 2000,2005和2008 SQL Server上执行了此查询.
在我的 TreeView 中,我使用两个不同的类进行绑定。例如,我有一个组,可以有 ChildGroup 并且可以有 Items。该类的示例代码:
using System.Collections.Generic;
using System.Collections.ObjectModel;
namespace WpfApplication1
{
public class Group
{
public Group(string name)
{
Name = name;
items = new ObservableCollection<Item>();
groups = new ObservableCollection<Group>();
}
public string Name { get;
set;
}
private ObservableCollection<Item> items;
private ObservableCollection<Group> groups;
public ObservableCollection<Item> Items
{
get { return items; }
}
public ObservableCollection<Group> Groups
{
get { return groups; }
}
public IEnumerable<object> AllItems
{
get
{
foreach (var group in groups)
{
yield return …
Run Code Online (Sandbox Code Playgroud) 我试图在TreeView中更改SelectedItem模板.我按照描述在Style.Triggers中编写了简单的容器样式并更改了项目模板
[1]:如何使用某种颜色突出显示树视图所选项目?要么
[2]:WPF TreeView:如何设置带有圆角的选定项目,如在资源管理器中,但它不起作用.
然后我创建了一个新项目,并使用简单的样式和模板创建了TreeView
<TreeView>
<TreeViewItem Header="Item1" />
<TreeViewItem Header="Item2" />
<TreeViewItem Header="Item3"/>
<TreeView.Resources>
<DataTemplate DataType="{x:Type TreeViewItem}" x:Key="selectedTemplate">
<StackPanel Height="25">
<TextBlock Text="SelectedItem"/>
</StackPanel>
</DataTemplate>
</TreeView.Resources>
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="FontStyle" Value="Italic"/>
<Setter Property="Foreground" Value="Red"/>
<Setter Property="Background" Value="Green"/>
<Setter Property="ItemTemplate" Value="{StaticResource selectedTemplate}"/>
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
Run Code Online (Sandbox Code Playgroud)
所以,然后我在树视图中选择了TreeViewItem,FontWeight,FontStyle和Foreground都被更改了,但是Background和ItemTemplate没有改变.
结果:
你能解释这个奇怪的行为吗?
我有一个外部函数,其语法如下:
public void Set<FieldType>(
Field field,
FieldType value
)
Run Code Online (Sandbox Code Playgroud)
字段类型可以是一些基本类型,如int、double、bool等,也可以是这些类型的通用列表,例如IList< int >
问题是我必须准确传递IList< T >接口。如果我传递任何实现IList< T >接口的类型,该函数将抛出InvalidOperationException Unsupported type: System.Collections.Generic.List`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089] ]
例如:
IList<int> list1 = new List<int>();
List<int> list2 = new List<int>();
Entity entity = new Entity();
//this works fine
entity.Set(field, list1);
//Here exception is throw
entity.Set(field, list2);
//works fine as well
entity.Set(field, list2 as IList<int>);
Run Code Online (Sandbox Code Playgroud)
我通过反射动态获取列表的问题
var property = entityType.GetProperty(field.FieldName);
dynamic propertyValue = …
Run Code Online (Sandbox Code Playgroud) treeview ×2
wpf ×2
c# ×1
datatemplate ×1
itemtemplate ×1
reflection ×1
sql-server ×1
triggers ×1