2009-09-24 3 views
0

У меня есть этот кусок кода:Linq выражение десятичной культуры

fee.SingleOrDefault(f => 100.05M >= f.Rate); 

В базе данных Fee.Rate это деньги поля хранится с использованием инвариантной культуры. Но использование этого select дает ошибку, потому что моя текущая культура преобразует «100,05» в «100,05», в результате чего она возникает;

An expression of non-boolean type specified in a context where a condition is expected, near ','. 

Каков наилучший способ для этого?

+0

Удаление моего ответа, поскольку это не помогло. – Robban

+0

Единственное, о чем я могу думать прямо сейчас: - Текущая культура Swith для инварианта - Выполнить запрос - Восстановить текущую культуру – 2009-09-24 10:19:55

ответ

0

Это поражает меня как меньше проблемы с LINQ, так и из-за проблемы с SubSonic. Взяв быстрый взгляд на свой синтаксический анализатор LINQ, похоже, что постоянные значения обрабатываются с помощью ToString() без учета культуры (см. SubSonic.Linq.Structure.TSqlFormatter.VisitConstant). Написание/внесение патча для этого было бы идеальным (либо разрешить спецификацию культуры, либо, по крайней мере, использовать инвариант по умолчанию), иначе я думаю, что вы застряли, переключая культуру потоков.

0

Благодарим вас за ответ. В качестве решения я изменил шаблон SqlServer.ttinclude, чтобы переключиться на инвариантную культуру в методе Find. Не идеальное, но временное решение, я создам патч или, по крайней мере, сообщаю о проблеме в SubSonic.

Смежные вопросы