2013-02-18 2 views
1

Я пытаюсь выполнить запрос linq для выполнения этого запроса. Колонку дополнительные данные NVARCHAR (20) - так LINQ читает его как строкуlinq версия sql с CAST to smallmoney

это отлично работает в SSMS

select SUM(CAST(AdditionalData as smallmoney)) from TransTable 
where ActionID = @actID and UserID = uID; 

это моя неудачная попытка в версии Linq (Decimal.Parse() может не могут быть преобразованы в SQL с помощью LINQ я предполагаю)

(from a in Context.TransTable 
    where a.ActionID == action.ActionID && a.UserID == (long)userId 
    select decimal.Parse(a.AdditionalData)).Sum(); 
+0

Вы видели этот ответ: http://stackoverflow.com/questions/14252717/data-type-casting-in-linq-to-sql?rq=1, кажется, это то, что вы хотите делать. – CodingGorilla

+0

Является ли это LINQ to SQL, EF или другим поставщиком запросов LINQ? – Servy

+0

linq to sql - - - - –

ответ

2

Если результат не слишком велик, можно разобрать значение на клиенте.

decimal value; 

var sum = (from a in Context.TransTable 
      where a.ActionID == action.ActionID && a.UserID == (long)userId 
      select a.AdditionalValue).ToList(). 
      Select(x => decimal.TryParse(x, out value) ? value : 0).Sum();