【发布时间】:2020-07-15 18:21:25
【问题描述】:
var a = 123;
var query = (from p in a where p.ID == a) //gives 10 records.
.Sum(Convert.Int32.Parse(x => x.balance); // this line gives the following message.
错误消息。 LINQ to Entities 无法识别方法“Int32 ToInt32 (System.String)”,
varchar 列的数据库设计不能更改为 int 或 double。
【问题讨论】:
-
您的代码毫无意义。它实际上应该做什么?
-
为什么要以字符串开头的数字值保存?类型的存在是有原因的,使用它们。将适当的类型与预期值匹配。示例:如果您想及时存储某个时刻,您应该使用 Date 类型(.net 中的 DateTime,sql server 中的 DateTime2 等)。如果要存储余额,请使用小数类型。名称可以是 unicode 字符串,代码可以是 ascii 字符串,不胜枚举。
-
您的意思可能是
Convert.ToInt32(...)或int.Parse(...)。 -
"I am new student. a varchar column contains numeric value ..."← 不要使用varchar来存储余额,使用像decimal这样的数字类型。然后您可以对存储的值(例如 sum)执行计算。 -
@igor。此时无法更改db的设计。是否可以在linq中使用convert方法并在varchar中对列求和。请分享任何一个工作示例。