C#string to number,当Parse失败时,TryParse返回true
发布时间:2020-12-15 22:13:36 所属栏目:百科 来源:网络整理
导读:我的数据库(SQL Server)中有一列将平均值存储为varchar. 值并不总是有效数字,它可以是:0,12,5.5,.4,4.0,6.,5.21428571428571428571428571428571428571,X,失败或只是空文本. 使用linq分配变量时,我想显示: 如果平均值是有效数字且 = 4则成功 如果平均值是有
我的数据库(SQL Server)中有一列将平均值存储为varchar.
值并不总是有效数字,它可以是:0,12,5.5,.4,4.0,6.,5.21428571428571428571428571428571428571,X,失败或只是空文本. 使用linq分配变量时,我想显示: >如果平均值是有效数字且> = 4则成功 代码 : myresults = myDataContext.myDbFunction() double note; from a in myresults select new MainReportModel() { Id = a.id,Lastname = a.nom,Firstname = a.prenom,Average = a.moyenne,Result = double.TryParse(a.moyenne.Trim(),NumberStyles.Number,CultureInfo.InvariantCulture,out note) ? (double.Parse(a.moyenne.Trim(),CultureInfo.InvariantCulture) < 4 ? "failed" : "success") : a.moyenne } 但是Parse失败了. 当用任何硬编码值替换double.Parse(a.moyenne.Trim()时(例如double.Parse(“3.3”),它可以正常工作. 所以似乎a.moyenne.Trim()的一个值导致Parse失败. 如果TryParse返回true,它怎么会失败? 编辑:这是错误消息: Could not translate expression 'value(MyProjectWeb.Models.MyProjectDataContext).myDbFunction().Select(a => new MainReportModel() {Id = a.id,Result = IIF(TryParse(a.moyenne.Trim(),Number,Invoke(value(System.Func`1[System.Globalization.CultureInfo])),Invoke(value(System.Func`1[System.Double]))),IIF((Parse(a.moyenne.Trim(),Invoke(value(System.Func`1[System.Globalization.CultureInfo]))) < 4),Invoke(value(System.Func`1[System.String])),"success"),((a.moyenne) + "</span>"))})' into SQL and could not treat it as a local expression. 解决方法
你不能在Sql服务器上执行TryParse,但是如果你没有做进一步的选择标准,那么你可以尝试从Sql中提取数据,然后在客户端上进行解析.
例如 myresults = myDataContext.myDbFunction() double note; var list =(from a in myresults select new { a.id,a.nom,a.prenom,a.moyenne,}).ToList(); var finalResults = (from a in list select new MainReportModel() { Id = a.id,CultureInfo.InvariantCulture) < 4 ? "failed" : "success") : a.moyenne } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |