C#LINQ,求和和类型系统 - 什么是int?类型

时间:2011-02-27 02:21:55

标签: c# linq types type-conversion

我在C#中使用LINQ。部分代码需要汇总一列。

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

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

我的问题是:
 什么是int?还是加倍? E&放;.类型?
- 将这些类型转换或转换为可用的int或double e&的最佳实践是什么?对应部分?

3 个答案:

答案 0 :(得分:4)

int?Nullable<int>

的简写

http://msdn.microsoft.com/en-us/library/1t3y8s4s%28v=VS.80%29.aspx

您可以使用myInt.HasValue查看是否存在值集,或者是否为null,然后myInt.Value在非空时检索int。

答案 1 :(得分: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

答案 2 :(得分:0)

您必须选择一个数字类型的列:
SomeTable.Where( CONDITION ).Sum(Entity => Entity.NumericColumn);
那么总和就是那个数字类型。