我在C#中使用LINQ。部分代码需要汇总一列。
SomeTable.Where( CONDITION ).Sum( Entity => Entity.IntColumn );
这会返回一种int吗?而不是一个int,因为表的列的类型也是int?形式。
我的问题是:
什么是int?还是加倍? E&放;.类型?
- 将这些类型转换或转换为可用的int或double e&的最佳实践是什么?对应部分?
答案 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");
}
答案 2 :(得分:0)
您必须选择一个数字类型的列:
SomeTable.Where( CONDITION ).Sum(Entity => Entity.NumericColumn);
那么总和就是那个数字类型。