2011-02-27 42 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

相關問題