linq.sum округляет - PullRequest
       9

linq.sum округляет

0 голосов
/ 08 марта 2012

На моем сайте vb.net есть следующая строка:

totCost = outstandingTimesheet.ClaimLines.Sum(Function(x) x.TotalLineCost And x.Queried = False)

Хотя сумма округлена, и я не могу понять, почему ...

Есть идеи?

Я не верю, что это просто случай форматирования вывода, это больше того, что происходит внутри суммы.

Это правильно?

Ответы [ 2 ]

1 голос
/ 08 марта 2012

Возможно, вы смешиваете Where и Sum? Я бы предложил:

outstandingTimesheet.ClaimLines.Where(x => !x.Queried).Sum(x => x.TotalLineCost);

Вы суммируете результат побитовой операции и:

outstandingTimesheet.ClaimLines.Sum(x => (x.TotalLineCost & x.Queried));

Однако ваши результаты должны быть полностью неверными, а не просто округлены. Это все C #, так как я был бы ужасно неправ с VB.NET. Извините за это.

В VB.NET (Саймон):

totCost = outstandingTimesheet.ClaimLines.Where(Function(x) x.Queried = False).Sum(Function(x) x.TotalLineCost)
0 голосов
/ 08 марта 2012

Возможно ли, что вы сохраняете результат, который получается как двойной, внутри int?Это возможно, если вы не активировали Option strict в свойствах вашего проекта.Это приведет к округлению результата вашей суммы.

Или вы можете просто ошибаться в своем LINQ, как указано Mudu

Редактировать: Чтобы уточнить Option strict: если он не включен, неявное приведение будет выполняться без уведомленияпредупреждение или ошибка, поэтому он может привести к двойному типу int, не сообщая вам, что вы делаете это.

Параметр строгий и параметр явный для MSDN

...