C # LINQ, система суммирования и типа - что такое int?тип - PullRequest
0 голосов
/ 27 февраля 2011

Я работаю с LINQ в C #. Для части кода требуется сумма вниз по столбцу.

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

Это возвращает тип int? а не int, поскольку тип столбца таблицы также имеет тип int? форма.

Мои вопросы:
Что такое инт? или двойной? е &. типа?
- Какова лучшая практика для преобразования или приведения этих типов в их пригодные для использования int или double e &. встречные части?

Ответы [ 3 ]

4 голосов
/ 27 февраля 2011

int? является сокращением для Nullable<int>

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

Вы можете использовать myInt.HasValue, чтобы увидеть, есть ли установленное значение или оно равно нулю, а затем myInt.Value чтобы получить int, когда он не равен нулю.

2 голосов
/ 27 февраля 2011

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 голосов
/ 27 февраля 2011

Вы должны выбрать один столбец числового типа:
SomeTable.Where( CONDITION ).Sum(Entity => Entity.NumericColumn);
Тогда сумма будет такого числового типа.

...