1

我正在尝试进行 linq 查询来执行此查询。Additional Data 列是 nvarchar(20) - 因此 linq 将其作为字符串读取

这在 SSMS 中运行良好

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

这是我在 linq 版本上的失败尝试(我猜 Decimal.Parse() 无法从 linq 转换为 sql)

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

1 回答 1

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();
于 2013-02-18T21:33:37.737 回答