2011-02-27 77 views
0

我正在用C#中的LINQ进行工作。部分代码需要在列下进行求和。C#LINQ,求和和类型系统 - 什么是int?键入

SomeTable.Where(CONDITION).Sum(Entity => Entity.IntColumn); 

这会返回一个int类型的?而不是int,因为表的列类型也是int?形成。

我的问题是这样的:
什么是int?或双重? e &。类型?
- 将这些类型转换或转换为可用int或double e的最佳实践是什么&。柜台部分?

回答

2

int?,double?等是可为空的类型。可为空的类型可以表示基础类型的所有值和一个附加的空值。

可空类型的每个实例有两个公共只读属性:

HasValue
HasValue为bool类型。当变量包含非空值时,它被设置为true。

Value
值与基础类型的属性相同。如果HasValue为true,则Value包含有意义的值。如果HasValue为false,则访问Value将引发InvalidOperationException。

int? x = 10; 
if (x.HasValue) 
{ 
    System.Console.WriteLine(x.Value); 
} 
else 
{ 
    System.Console.WriteLine("Undefined"); 
} 

http://msdn.microsoft.com/en-us/library/2cf62fcy.aspx#Y431

0

你必须选择一个数字类型的一列:
SomeTable.Where(CONDITION).Sum(Entity => Entity.NumericColumn);
然后总和将是数字式的。

+0

这难道不是犹太使用它作为总和(实体=> Entity.IntColumn),而不是选择(...).SUM()? (因为这是我在做什么) – zellio 2011-02-27 02:29:48

+0

的确,你是对的。 http://msdn.microsoft.com/en-us/library/bb549046.aspx – Cosmin 2011-02-27 02:36:25

相关问题